Lun*_*rap 1 c# generics inheritance constructor abstract-class
我有一个简单FiniteStateMachine,并为FSM的状态是从继承的类FSMState抽象类,至极的力量实现的某些方法和字段,该ownerClass字段是一个泛型类型,所以每个国家持有到拥有该实例的类的引用密克罗尼西亚联邦
public abstract class FSMState<T>
{
/// <summary>
/// Reference to the owner class of this State.
/// </summary>
protected abstract T ownerClass { get; set; }
/// <summary>
/// The ID name of this State.
/// </summary>
public abstract string Name { get; set; }
//Constructor
public FSMState(T owner, string name)
{
ownerClass = owner;
Name = name;
}
}
Run Code Online (Sandbox Code Playgroud)
所以州级会看起来像这样
public class MovingState : FSMState<AI>
{
protected override AI ownerClass { get; set; }
public override string Name { get; set; }
//Contructor.
public MovingState(AI owner, string name)
{
ownerClass = owner;
Name = name;
}
}
Run Code Online (Sandbox Code Playgroud)
但构造函数不起作用,我得到这2个错误
错误CS7036没有给出对应于FSMState.FSMState所需的形式参数所有者的参数(AI,字符串)
错误:类型FSMState不包含带0参数的构造函数
我不知道如果这样做,这是可能的,我想继承的形式类FSMState实现一个构造函数设置字段Name和ownerClass,但ownerClass字段必须是通用
我想做一些不可能的事情?
您需要在以下位置调用基类构造函数MovingState:
public MovingState(AI owner, string name)
: base(owner, name)
{
}
Run Code Online (Sandbox Code Playgroud)