我有一个名为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#中吗?
答案 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();