Согласно Microsoft, «методы расширения являются особым видом статического метода, но они вызываются так, как если бы они были методами экземпляра для расширенного типа».
Да, методы расширения являются статическими. Все они могут вызываться обычным способом как статические методы, как методы экземпляра расширения для типа, который они «расширяют», и они даже могут вызываться как методы расширения по нулевой ссылке.
Например:
public static class Extensions {
public static bool IsNullOrEmpty(this string theString) {
return string.IsNullOrEmpty(theString);
}
}
// Code elsewhere.
string test = null;
Console.WriteLine(test.IsNullOrEmpty()); // Valid code.
Console.WriteLine(Extensions.IsNullOrEmpty(test)); // Valid code.
Edit:
Есть ли способ добавить метод расширения, который вызывается так, как если бы он был статическим методом?
Вы хотите сказать, что хотите вызвать, например, string.MyExtensionMethod ()? В этом случае нет, сделать это невозможно.