无法在另一个文件中访问我的扩展方法

时间:2012-01-05 16:59:22

标签: 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;
        }
    }
}

然后:

using TextBoxExtensions;

// ...

textbox.ResetColor();

当我尝试在另一个文件中访问它时,我收到以下错误:

  

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

4 个答案:

答案 0 :(得分:4)

textbox是什么类型的?您的扩展程序适用于Label个对象。我猜这是你的问题....你的textbox对象不是Label

类型

答案 1 :(得分:2)

问题是您已为Label类型定义了扩展方法,但正在尝试调用TextBox的实例。

答案 2 :(得分:2)

请尝试使用此功能,这样您就可以将其用于任何类型的控件:

    public static void ResetColor<T>(this T control) where T : Control, new()
    {
        control.ForeColor = new T().ForeColor;
    }

答案 3 :(得分:1)

您已为Label课程定义了扩展方法。然后你试图在TextBox上使用它,这显然不起作用(这两个类彼此没有关系)。