从另一个类中分配实例的方法?

时间:2013-03-19 11:39:32

标签: c# methods

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

我想在我的Main类中指定一个替换SimObject的方法,而不是在另一个新类中扩展和覆盖Draw()。 Main类创建SimObject并保存它的实例。那我怎么能这样做:

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

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

这可能在c#中吗?

2 个答案:

答案 0 :(得分:2)

如果您不想继承它,但想扩展它,可以使用Extension Method

public class MyList{


}

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

和用法

new MyList()。DrawSomethingElse();

答案 1 :(得分:0)

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

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

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

一样
SimObject o = new SimObject();
o.Draw();