Если я правильно вас понимаю, это то, что вы говорите:
public class MyClass
{
....
}
public static class MyClassExtension
{
public static void MyClassExtensionMethod1(this MyClass obj, string name)
{
if(obj == null)
{
// what to do here, since obj is not used anywhere in this method
}
Console.WriteLine(name);
}
}
Я думаю, это зависит от вашей школы мысли.
Поскольку MyClassExtensionMethod1
невообще используйте объект MyClass
, вы можете пропустить проверку и пропустить уведомление клиентского кода (или пользователей).
Прежде чем идти дальше, я хотел бы спросить себя, какой смысл иметь этот метод расширения вво-первых, если он не ссылается на экземпляр переданного класса?
Я бы просто предложил один из двух следующих подходов:
Если вы можете изменить код, и этот метод принадлежит MyClass, сделайте MyClassExtensionMethod1 методом в MyClass
.Конечно, это означает, что экземпляр не будет нулевым, поэтому вы меняете свои ожидания:)
public class MyClass
{
...
public MyClassMethod1(string name)
{
Console.WriteLine(name);
}
}
... Или, если вам действительно не нужен экземпляр MyClass, переместитеэтот метод для другого класса, независимо от MyClass
:
// not an extension class
public class MyOtherClass
{
public void MyOtherClassMethod1(string name)
{
Console.WriteLine(name);
}
}
Даже если вы сохраняете свой метод расширения (и независимо от того, генерирует он или нет), я предлагаю добавить хорошую документацию по вашему решению для дальнейшего использования.