是否可以在.Net 3.5中进行通用控制?
我声明了以下Generic usercontrol:
public partial class MessageBase : UserControl { protected T myEntry; public MessageBase() { InitializeComponent(); } public MessageBase(T newEntry) { InitializeComponent(); myEntry = newEntry; } } }
但编译器不允许我这样做:
public partial class MessageControl : MessageBase { public MessageControl() { InitializeComponent(); } }
如何在C#中创建通用用户控件?
试试这个
public partial class MessageControl : MessageControlBase { public MessageControl() { InitializeComponent(); } } public class MessageControlBase : MessageBase {}
让设计人员工作的关键是你正在编辑的类的基类不能是通用的。
是。 这是可能的。 请参阅以下链接以了解相关信息。
首先,虽然在.NET下可以使用通用控件,但Visual Studio设计者不支持它们,所以如果你想使用它们,你就可以独立完成。 您必须在代码中自己实例化它们并执行布局。
至于你提到的错误,听起来就像你在寻找错误的方向。 也许你可以在这里写出整个错误文本?
.NET框架支持它们,但是作为Vilx提及,设计者根本不支持 – 任何基于xml /标记的平台(xaml(wpf)或ASP.NET)都不会喜欢generics。 所以最好的建议是:不要使用它们。
一个常见的折衷方案是使用Type
属性(或调用GetType()
的object
模板属性),并在控件内部简单地转换等。 同样,这种用法通常会使用Activator.CreateInstance
和TypeDescriptor
(用于元数据查找等)。