Проблемы стирания типов C#C#

Место общения программистов C#
Anonymous
Проблемы стирания типов C#

Сообщение Anonymous »

Собираем конечный автомат на C#. У меня есть интерфейс и абстрактный класс реализации:

Код: Выделить всё

public interface IState where SD : IStateData {
T EnterState(InputData inputData, SD movementData) where T : IState;
}

public abstract class AMovementState : IState {
public abstract AMovementState EnterState(InputData inputData, MovementData movementData);
}

Код: Выделить всё

MovementData
реализует IStateData, так что кажется, что все должно работать нормально. Однако я получаю ошибку компиляции:


Ошибка CS0425: ограничения для параметра типа AMovementState методаAMovementState.EnterState (InputData, MovementData)' должен соответствовать ограничениям для параметра типа T' метода интерфейсаIState.EnterState(InputData, MovementData)'. Вместо этого рассмотрите возможность использования явной реализации интерфейса (CS0425) (Assembly-CSharp)


Я думаю, что это проблема со стиранием типа, но я я не на 100%. Нужно ли мне переработать свой подход или я упускаю что-то глупое? В основном у меня есть опыт работы с Java.

Подробнее здесь: https://stackoverflow.com/questions/367 ... ure-issues

Вернуться в «C#»