【发布时间】:2010-07-01 14:11:54
【问题描述】:
我有一个 C# 类库,它被编译成一个 dll。是否可以在不触及原始源代码或通过继承创建新类的情况下更改特定项目的编译类方法中的某些内容?
【问题讨论】:
标签: c# overriding
我有一个 C# 类库,它被编译成一个 dll。是否可以在不触及原始源代码或通过继承创建新类的情况下更改特定项目的编译类方法中的某些内容?
【问题讨论】:
标签: c# overriding
通过Moles 等框架使用的技术,使用代码重写在技术上是可行的。但是,我不会推荐这个。相反,您最好使用一个包装类,该类将调用委托给包含的对象,并仅针对必须更改的特定方法覆盖您所追求的行为。
【讨论】:
【讨论】:
我不这么认为。您可以创建一个扩展方法,尽管它无法访问私有/受保护/内部成员。
【讨论】:
如果您有源代码但不想更改它 - 分支它。
如果您可以接受稍微不同的方法签名,请编写扩展方法。
如果上述方法都不适合您,并且类必须具有相同的名称,请使用同名的类继承、覆盖并将该类放置在不同的命名空间中。通过命名空间区别于原来的。只是正常继承可能会更容易维护,不过......
如果你还是不开心,我帮不了你。
【讨论】:
据我所知,不是。你能详细解释一下你的场景,为什么你需要做这样的事情吗?
【讨论】:
通过一些涉及反射和reflection emit 的大量黑客攻击进入新的application domain,当然。但我怀疑这是否值得。
【讨论】: