我有一个为我创建和设置对象的库,然后我可以使用这些对象来做事。
假设我得到了“A”类的对象“a”
所以我想覆盖该特定对象中的一个方法,我不想更改其类的代码,因为这需要更改库。
在 Ruby 中,我可以使用单例类来做到这一点,例如:
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# 中做同样的事情?
更新
我最终没有使用我提交的答案,因为它太丑了,它需要将基类中的所有私有字段更改为保护或公共以使它们存在于派生类中,因此我可以将值从基类复制到派生类。
我最终使用的方法是将派生自基类的 Type 传递给库并更改库,以便它使用以下方法创建实例:
(A)Activator.CreateInstance(mytype, arguments);