C# 具有泛型构造函数类型的控件<;T>;

C# 具有泛型构造函数类型的控件<;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

我有下面的类,它将在不同的自定义控件中调用。这些控件具有winforms的自定义外观。控件的类型分别为Control1、control2…我可以有一个T可以是的类型的泛型构造函数吗 Namespace.C1、Namespace.C2、Namespace.C3、Namespace.C4…、Namespace.C8

问题:SimpleDirtyTracker _tracker=新的SimpleDirtyTracker(Type),其中T是一个带有大量文本框的用户控件,而不是 SimpleDirtyTracker _tracker=新SimpleDirtyTracker(表格frm)

此类将从自定义控件中调用。这些控件大多使用文本框作为Winforms

     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();
            }