C# Can';无法访问另一个文件中的扩展名方法

C# Can';无法访问另一个文件中的扩展名方法,c#,.net,winforms,extension-methods,C#,.net,Winforms,Extension Methods,我在Extensions.cs文件中有这个名称空间: namespace TextBoxExtensions { public static class TextBoxExtensionsClass { public static void ResetColor(this Label label) { label.ForeColor = new TextBox().ForeColor; } } }

我在
Extensions.cs
文件中有这个名称空间:

namespace TextBoxExtensions
{
    public static class TextBoxExtensionsClass
    {
        public static void ResetColor(this Label label)
        {
            label.ForeColor = new TextBox().ForeColor;
        }
    }
}
然后:

//

textbox.ResetColor();
当我尝试在另一个文件中访问它时,会出现以下错误:

“System.Windows.Forms.TextBox”不包含“ResetColor”的定义,并且最佳扩展方法重载“TextBoxExtensions.TextBoxExtensionsClass.ResetColor(System.Windows.Forms.Label)”具有一些无效参数


什么类型的文本框是
textbox
?扩展名用于
标签
对象。我猜这是你的问题。。。。您的
文本框
对象不是Label类型

您已经为
Label
类定义了扩展方法。然后,您试图在
文本框上使用它,由于明显的原因,这将不起作用(这两个类彼此没有关系)。

问题是,您已经为
标签
类型定义了扩展方法,但试图调用
文本框的实例

请尝试此操作,这将允许您将其用于任何类型的控件:

    public static void ResetColor<T>(this T control) where T : Control, new()
    {
        control.ForeColor = new T().ForeColor;
    }
publicstaticvoidresetcolor(这个T控件),其中T:control,new()
{
control.ForeColor=新的T().ForeColor;
}

您的扩展方法扩展了
标签
类,而不是
文本框
类。如果仔细观察,您会发现编译错误告诉您问题出在哪里-参数的类型不匹配。
    public static void ResetColor<T>(this T control) where T : Control, new()
    {
        control.ForeColor = new T().ForeColor;
    }