创建一个扩展方法来覆盖不同的 类

Create an extension method to override from different classes

我有不同的 class 全部覆盖 ToString() 函数并且它们都使用相同的逻辑

我现在正在做的是为那些 classes 调用一个静态方法,我想知道是否可以创建一个扩展方法来调用所有那些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
}

我创建了一个这样的扩展方法

静态 class 扩展方法 { public 静态字符串 myStoString(这个对象 obj) { //做东西 } }

但我不知道怎么称呼它,甚至不知道它是否可能

你目前的做法是可以的。

扩展方法也是静态方法。在运行时不会有任何区别,只是语法一个:

this.myToString()

而不是

Helper.myToString(this)

由于为 object 编写扩展方法不是一个好的选择(它将适用于所有内容),Helper class 更可取。

您可以像这样创建一个空界面:

public interface IPrintable { }

现在更改您的 class 声明,使它们实现该接口

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();