Я пытаюсь инициализировать объект DataEditor
, где мой класс DataEditor
реализует интерфейс IDataEditor
.
DataEditor editor = GetEditorFor(student);
Во время выполнения я получил исключение TypeLoadException: GenericArguments [0], 'Namespace.Data.Student', в 'Namespace.IDataEditor`1 [T]' нарушает ограничение параметра типа. «Т». Исключение происходит в строке выше, еще до того, как оно попадет внутрь метода GetEditorFor.
Единственное ограничение на T - это IEditableObject
, и мой класс Student
явно реализует его (я дважды проверил орфографию интерфейса, пространство имен и т. Д.), А также компилятор этого не делает. t выдает мне какую-либо ошибку, поэтому я понятия не имею, почему эта ошибка возникает во время выполнения.
Если я удалю ограничение IEditableObject
, код будет работать без этого исключения, но моя логика зависит от того, является ли класс IEditableObject
, поэтому это не вариант.
Есть идеи, почему это происходит и как это исправить?
Эти страницы кажутся связанными, но я все еще не знаю решения
Это ошибка .NET? Кто-нибудь нашел обходной путь?
Изменить: объявление по запросу
public class DataEditor : ViewModel, IDataEditor where T : IEditableObject
public interface IDataEditor : IDataEditor
where T : IEditableObject