我正在使用.NET Compact Framework,并开始重构一些UI代码。我正在定义一个基本用户控件来封装常用功能,项目编译好了,但是当我尝试在设计模式下打开子用户控件时,我收到错误。
我将我的班级层次结构考虑在内this question。我的课程是这样的:
//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'类型的约束
有人可以向我指出为什么这不起作用?
答案 0 :(得分:1)
这必然是一个模糊问题,编译器在编译FooUserControl时会看到IDataObject的不同的定义。这很容易做到,System.Windows.Forms命名空间已经有了一个IDataObject接口。
选择其他名称或输入完整的命名空间名称。