C# 将属性应用于泛型类型的子类

C# 将属性应用于泛型类型的子类,c#,winforms,generics,C#,Winforms,Generics,这是我的密码: using System; using System.Drawing; using System.Windows.Forms; namespace HidingMyAppNameHereSoYouCantStealMyIdeas.Classes._Main { public class Theme { private Color ForeColor; private Color BackColor; public

这是我的密码:

using System;
using System.Drawing;
using System.Windows.Forms;

namespace HidingMyAppNameHereSoYouCantStealMyIdeas.Classes._Main
{
    public class Theme
    {
        private Color ForeColor;
        private Color BackColor;

        public Theme(Color fore, Color back)
        {
            ForeColor = fore; BackColor = back;
        }

        public void ApplyTo<T>() where T : Form
        {
            T.ForeColor = Color.Black;

        }

        public void ApplyTo(Control control)
        {
            control.ForeColor = ForeColor;
            control.BackColor = BackColor;
        }
    }
}
使用系统;
使用系统图;
使用System.Windows.Forms;
命名空间隐藏MyAppNameHeresoyoucantStealMyIdeas.Classes.\u Main
{
公开课主题
{
私人彩色前景色;
私色底色;
公共主题(前彩色、后彩色)
{
前向色=前向;后向色=后向;
}
public void ApplyTo(),其中T:Form
{
T.ForeColor=颜色为黑色;
}
公共无效应用程序(控制)
{
control.ForeColor=前景色;
control.BackColor=背景色;
}
}
}
T.ForeColor=Color.Black中,我在
T
处得到一个错误说:

错误CS011:“T”是一个类型参数,在给定类型中无效 上下文

我假设我做错的是尝试访问泛型的属性

无论如何,我想我在这里要做的很清楚,因为在创建Windows窗体应用程序时,
窗体
通常是一个类,而不是像窗体应用程序控件那样的变量


尽管我可能找到了解决这个问题的方法,但我想知道是否有可能访问T(我感兴趣的Form的子类)的属性,并对其进行更改,以使
ApplyTo()中的代码(其中T:Form
没有错误)用于学习目的。如果不可能,那也没关系。

如果您将代码从

public void ApplyTo<T>() where T : Form
{
    T.ForeColor = Color.Black;
}

如果你把代码从

public void ApplyTo<T>() where T : Form
{
    T.ForeColor = Color.Black;
}

您无法访问类的属性-您只能访问某些类的对象的属性。在什么情况下您会使用
ApplyTo()
?似乎您只需要
ApplyTo(Control)
@MetaColon就可以了。在这种情况下,我犯了愚蠢的错误。@JohnWu我想改变表单本身的主题。表单不是控件,而Form1实现表单。我想我有点糊涂了。表单就是控件。具体来说,
System.Windows.Forms.Form
继承自
System.Windows.Forms.Control
。你只需要一种方法。你根本不需要泛型。你不能访问类的属性-你只能访问某些类的对象的属性。在什么情况下你会使用
ApplyTo()
?似乎您只需要
ApplyTo(Control)
@MetaColon就可以了。在这种情况下,我犯了愚蠢的错误。@JohnWu我想改变表单本身的主题。表单不是控件,而Form1实现表单。我想我有点糊涂了。表单就是控件。具体来说,
System.Windows.Forms.Form
继承自
System.Windows.Forms.Control
。你只需要一种方法。您根本不需要泛型。因为表单是控件的一种类型,所以您可以调用
ApplyTo(控件)
(在类的下面定义)。
ApplyTo(form)
@JohnWu-ok没有明显的目的。我不知道表单是控件。这也是我的错……而且,所有的表单都是从
控件
之前的
表单中派生出来的
public void ApplyTo(Form Form){…}
就可以了。因为表单是控件的一种类型,所以可以调用
ApplyTo(control)
(在类中定义得更低)。
ApplyTo(form)
@JohnWu-ok没有明显的目的。我不知道表单是控件。这也是我的错……而且,所有的表单都是从
控件
之前的
表单中派生出来的<代码>公共无效应用程序(表单){…}
就可以了。
public void ApplyTo(Form form)
{
    form.ForeColor = Color.Black;
}