Я работаю с .NET Compact Framework и только начал проводить рефакторинг некоторого кода пользовательского интерфейса. Я определяю базовый пользовательский элемент управления для инкапсуляции общих функций, проект компилируется нормально, но когда я пытаюсь открыть дочерний пользовательский элемент управления в режиме разработки, я получаю сообщение об ошибке.
Я создал иерархию классов с учетом этого вопроса . Мои занятия такие:
//on the data layer..
interface IDataObject {}
class Foo: IDataObject {}
//on the UI layer i have
class BaseDataUserControl<TDataObject> : UserControl
where TDataObject : IDataObject {}
class FooUserControl : BaseDataUserControl<Foo> {}
Это ошибка, которую я получаю:
GenericArguments [0], 'Foo' в 'BaseDataUserControl`1 [TDataObject]' нарушает ограничение типа 'TDataObject'
Может кто-нибудь указать мне, почему это не работает?