我有一个可以为我创建和设置对象的库,然后我可以使用这些对象来做事情。
假设我得到了类“A”的对象“a”。
所以我想覆盖那个特定对象中的一个方法,我不想改变它类的代码,因为那需要改变这个库。
在Ruby中,我可以使用Singleton Classes来实现这个,就像这样:
class FirstClass
def test
p "test"
end
end
o = FirstClass.new
class << o
def test
p "overridden"
end
def extraMethod
p "ok"
end
end
o.test # prints "overridden"
o.extraMethod
现在我该如何使用C#实现同样的功能呢?
更新
最终我没有使用我提交的答案,因为它太丑陋了,而且需要将基类中的所有私有字段更改为保护或公共字段,以便它们存在于派生类中,因此我可以从基类复制值到派生类。
我最终采用的方法是将一个派生自基类的类型传递给库,并更改库,以便使用以下方式创建实例:
(A)Activator.CreateInstance(mytype, arguments);