Подтвердить что ты не робот

Методы расширения в статическом классе?

Возможный дубликат:
Могу ли я добавить методы расширения к существующему статическому классу?

Я знаю, что могу сделать ниже, чтобы расширить класс. У меня есть статический класс, который я хотел бы расширить. Как я могу это сделать? Я хотел бы написать ClassName.MyFunc()

static public class SomeName
{
    static public int HelperFunction(this SomeClass v)
4b9b3361

Ответ 1

У вас не может быть методов расширения для статических классов, потому что методы расширения применимы только к типы и статические классы не могут быть инстанцирован.

Проверьте этот код..

    public static bool IsEmail(this string email)
    {
        if (email != null)
        {
            return Regex.IsMatch(email, "EmailPattern");
        }

        return false;
    }

Первый параметр IsEmail() - это экземпляр расширяемого типа, а не только сам тип. У вас никогда не может быть экземпляра статического типа.

Ответ 2

Вы не можете распространять статические классы в С#. Методы расширения работают, определяя статические методы, которые появляются как методы экземпляра для некоторого типа. Вы не можете определить метод расширения, который расширяет статический класс.

Ответ 3

Возможно, вы захотите превратить свой статический класс в singleton. Тогда будет только один экземпляр класса. И вы можете использовать методы расширения на нем, потому что это экземпляр.

Это означает, что у вас есть доступ к исходному коду класса.