Не могу получить доступ к моим методам расширения в другом файле - PullRequest
0 голосов
/ 05 января 2012

У меня есть это пространство имен в 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 ]

4 голосов
/ 05 января 2012

какой тип textbox? Ваше расширение для Label объекта. Я предполагаю, что это ваша проблема .... что ваш textbox объект не имеет типа Label

2 голосов
/ 05 января 2012

Попробуйте вместо этого, это позволит вам использовать его для любого типа управления:

    public static void ResetColor<T>(this T control) where T : Control, new()
    {
        control.ForeColor = new T().ForeColor;
    }
2 голосов
/ 05 января 2012

Проблема в том, что вы определили свой метод расширения для типа Label, но пытаетесь вызвать экземпляр TextBox.

1 голос
/ 05 января 2012

Вы определили свой метод расширения для класса Label.Затем вы пытаетесь использовать его на TextBox, который по понятным причинам не будет работать (два класса не имеют никакого отношения друг к другу).

...