C# 具有泛型构造函数类型的控件<;T>;
我有下面的类,它将在不同的自定义控件中调用。这些控件具有winforms的自定义外观。控件的类型分别为Control1、control2…我可以有一个T可以是的类型的泛型构造函数吗 Namespace.C1、Namespace.C2、Namespace.C3、Namespace.C4…、Namespace.C8 问题:SimpleDirtyTracker _tracker=新的SimpleDirtyTracker(Type),其中T是一个带有大量文本框的用户控件,而不是 SimpleDirtyTracker _tracker=新SimpleDirtyTracker(表格frm) 此类将从自定义控件中调用。这些控件大多使用文本框作为WinformsC# 具有泛型构造函数类型的控件<;T>;,c#,winforms,C#,Winforms,我有下面的类,它将在不同的自定义控件中调用。这些控件具有winforms的自定义外观。控件的类型分别为Control1、control2…我可以有一个T可以是的类型的泛型构造函数吗 Namespace.C1、Namespace.C2、Namespace.C3、Namespace.C4…、Namespace.C8 问题:SimpleDirtyTracker _tracker=新的SimpleDirtyTracker(Type),其中T是一个带有大量文本框的用户控件,而不是 SimpleDirtyT
private void Control_Load(object sender, EventArgs e)
{
// in the Load event initialize our tracking object
//To Pass a generic type. //Needs a generic type in the constructor. Type T could be Namespace.C1...Namespace.C8
_dirtyTracker = new SimpleDirtyTracker(Custom Control T);
_dirtyTracker.SetAsClean();
}
是的,如何将泛型类型传递给构造函数。。与其给它一个特定的类型,比如表单,我想说,SimpleDirtyTracker\u tracker=new SimpleDirtyTracker(type),其中T是一个带有大量文本框的用户控件。UI不是
IsDirty
类型的东西的正确位置。这就是winforms的问题所在,它迫使您使用各种可怕的反模式,因为它不允许真正分离UI和数据。我建议您研究MVP模式,它与winforms中的模式一样好,或者使用支持更干净模式的当前技术,如WPF和MVVM。将类型指定为类泛型类型参数有什么错?您想要做的只是对设计时检查有用,因为我们总是可以在运行时使用一些代码来检查类型。
private void Control_Load(object sender, EventArgs e)
{
// in the Load event initialize our tracking object
//To Pass a generic type. //Needs a generic type in the constructor. Type T could be Namespace.C1...Namespace.C8
_dirtyTracker = new SimpleDirtyTracker(Custom Control T);
_dirtyTracker.SetAsClean();
}