前言:标题可能没有说明我遇到的真正问题。我只是不知道我能以更好更短的方式表达我的问题。
关于以下结构,我对C#中的通用接口实现有疑问:
public interface ITransition
{
IState<ITransition> SourceState { get; }
IState<ITransition> DestinationState { get; }
}
public interface IState<T> where T : ITransition
{
List<T> Transitions { get; }
StateType StateType { get; }
}
以下IState
接口的实现:
public class FieldState : IState<FieldTransition>
然后我想要ITransition
:
public class FieldTransition : ITransition
{
public IState<ITransition> SourceState { get; }
public IState<ITransition> DestinationState { get; }
private IIntent ConditionalIntent { get; }
public FieldTransition(FieldState sourceState, FieldState destinationState,
IIntent conditionalIntent)
{
SourceState = sourceState;
DestinationState = destinationState;
ConditionalIntent = conditionalIntent;
}
}
但我得到的只是一个错误,FieldState无法转换为IState<Itransition>
。我是否真的必须在构造函数实现中手动转换它,还是有更简单的方法来执行此操作?