【发布时间】:2010-08-06 18:01:00
【问题描述】:
我正在使用 .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', on 'BaseDataUserControl`1[TDataObject]' 违反了类型 'TDataObject' 的约束
谁能告诉我为什么这不起作用?
【问题讨论】:
-
从语言的角度来看,您的代码没有任何问题。
-
是的,我知道,也许它特定于 VS =S 中的可视化编辑器
-
你确定到处都是同一个 IDataObject 吗?将光标放在每个出现处,然后在 Visual Studio 中按 F12 以转到其定义。你每次都在同一个地方结束吗?正如@Steven 所说,发布的代码很好,所以单独它不会导致这个问题。
-
@Lasse V. Karlsen 我刚刚做了这个练习,是的,它是相同的 IDataObject =S
标签: c# generics inheritance forms constraints