可以';t在另一个文件中访问我的扩展方法

本文关键字:访问 我的 扩展 方法 文件 另一个 可以 | 更新日期: 2023-09-27 18:19:28

我在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.TextBoxExtensionClass.ResetColor(System.Windows.Fforms.Label)"具有一些无效参数

可以';t在另一个文件中访问我的扩展方法

什么类型的textbox?您的扩展名是针对Label对象的。我猜这是你的问题。。。。您的textbox对象不是Label 类型

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

试试这个,这将允许您将其用于任何类型的控制:

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

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