Я пытаюсь попасть в генераторы C# и создал конечный автомат с шаблоном состояния, и теперь я пытаюсь реорганизовать.C# generics, перекрестные ссылочные классы для шаблона состояния
У меня есть состояние, в котором есть ссылка на объект, над которым он работает.
public abstract class AbstractState<T> where T : StatefulObject {
protected T statefulObject;
public AbstractState(T statefulObject) {
this.statefulObject = statefulObject;
}
}
и у меня есть объект, который имеет состояния, это должно иметь ссылку на его текущее состояние.
public abstract class StatefulObject<T> : MonoBehaviour where T : AbstractState<StatefulObject<T>> {
public T state;
}
Но это не работает («тип не может быть использован в качестве параметра типа„Т“в универсальном типе или методе»).
То, что я хочу достичь, это что-то вроде этого:
public class Monster : StatefulObject<MonsterState> {
}
public abstract class MonsterState : AbstractState<Monster> {
}
Возможно ли это? Если это не так, есть ли другое? Спасибо.
Как вы объявляете 'StatefulObject' как общий тип (2-й фрагмент) и используете его как не общий тип (первый фрагмент)? –