1

我有一个名为SimObject. 在这个类中,有一个名为 的公共函数Draw()。 

我不想从另一个新类中扩展和覆盖SimObject,而是想分配一个方法来Draw()从我的 Main 类中替换。Main 类创建SimObject并保存它的一个实例。那么我该怎么做这样的事情:

public class Main {
   public static void Main() {
      //constructor 
      var obj = new SimObject();
      obj.Draw = MyNewDrawMethod;
   }

   public void MyNewDrawMethod() {
      //some code
   }
}

这在c#中可能吗?

4

2 回答 2

2

如果您不想继承它但想扩展它,您可以使用扩展方法。

public class MyList{


}

public static class MyZListExtesion
{
    public static void DrawSomethingElse(this MyList obj)
    {
        // override Draw from here
    }
}

和用法

新的 MyList().DrawSomethingElse();

于 2013-03-19T11:46:40.393 回答
0

它不允许您分配方法,但您可以使用扩展方法添加功能。

public static class SimObjectExtensions
{
    public static void Draw(this SimObject obj)
    {
        // some code
    }
}

这将允许您使用 Draw 方法,就好像它是 SimObject 的实例方法一样

SimObject o = new SimObject();
o.Draw();
于 2013-03-19T11:48:33.907 回答