1

I have a finalised class called SimObject. In this class, there is a public function called Draw()

Instead of extending and overriding from SimObject in another new class, I would like to assign a method to replace Draw() from my Main class. The Main class creates the SimObject and holds an instance of it. So how can I do something like this:

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

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

Is this possible in c#?

4

2 に答える 2

2

継承したくないが拡張したい場合は、拡張メソッドを使用できます。

public class MyList{


}

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

と使用法

new 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 に答える