Методы расширения в статическом классе?
Возможный дубликат:
Могу ли я добавить методы расширения к существующему статическому классу?
Я знаю, что могу сделать ниже, чтобы расширить класс. У меня есть статический класс, который я хотел бы расширить. Как я могу это сделать? Я хотел бы написать ClassName.MyFunc()
static public class SomeName
{
static public int HelperFunction(this SomeClass v)
Ответы
Ответ 1
У вас не может быть методов расширения для статических классов, потому что методы расширения применимы только к типы и статические классы не могут быть инстанцирован.
Проверьте этот код..
public static bool IsEmail(this string email)
{
if (email != null)
{
return Regex.IsMatch(email, "EmailPattern");
}
return false;
}
Первый параметр IsEmail() - это экземпляр расширяемого типа, а не только сам тип. У вас никогда не может быть экземпляра статического типа.
Ответ 2
Вы не можете распространять статические классы в С#. Методы расширения работают, определяя статические методы, которые появляются как методы экземпляра для некоторого типа. Вы не можете определить метод расширения, который расширяет статический класс.
Ответ 3
Возможно, вы захотите превратить свой статический класс в singleton. Тогда будет только один экземпляр класса. И вы можете использовать методы расширения на нем, потому что это экземпляр.
Это означает, что у вас есть доступ к исходному коду класса.