我有不同的类,所有覆盖ToString()
功能,它们都使用相同的逻辑
而我现在做的是,我打电话给这些类的静态方法,我想知道它可以创建一个扩展方法,将那些所有这些ToString()
方法被调用
这是我到目前为止
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){//做的东西}}
但我不知道该怎么称呼它,或者如果它甚至有可能
您当前的做法是确定。
扩展方法是静态的方法了。不会有在运行任何区别,只是语法之一:
this.myToString()
代替
Helper.myToString(this)
由于写object
扩展方法是不是一个好的选择(它将可用于一切),Helper
类是优选的。
您可以创建这样一个空的接口:
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();