我有不同的类,它们都覆盖ToString()
函数,并且它们都使用相同的逻辑
我现在正在做的是为这些类调用一个静态方法,我想知道它有可能创建一个扩展方法,并从所有这些ToString()
方法中调用< / p>
这是我到目前为止所拥有的
public class A
{
public override string ToString()
{
return Helper.myToString(this);
}
}
public class B
{
public override string ToString()
{
return Helper.myToString(this);
}
}
和myToString()
public static string myToString(object obj)
{
///do stuff
}
我创建了这样的扩展方法
静态类ExtensionMethods { 公共静态字符串myStoString(此对象obj) { //做东西 } }
但是我不知道怎么称呼它甚至可能
答案 0 :(得分:0)
您当前的方法还可以。
扩展方法也是静态方法。在运行时不会有任何区别,只是一种语法:
this.myToString()
代替
Helper.myToString(this)
由于为object
编写扩展方法不是一个好选择(它将适用于所有内容),因此最好使用Helper
类。
答案 1 :(得分:0)
您可以这样创建一个空接口:
public interface IPrintable { }
现在更改您的类声明,以使他们实现该接口
public class A : IPrintable
{
// ...
}
public class B : IPrintable
{
// ...
}
因为界面为空,所以无需其他更改。然后,您可以将扩展方法写入IPrintable
public static class ExtensionMethods
{
public static string MyToString(this IPrintable printable)
{
// do stuff
}
}
并使用它:
// will work
var a = new A();
a.MyToString();
// will not work
var c = 10;
c.MyToString();