我在C#中有一个类库,编译成一个dll。是否可以改变某个特定项目的编译类方法中的某些内容,而无需触摸原始源代码或通过继承创建新类?在C#编译库中没有继承的重写方法#
0
A
回答
4
技术上可以通过框架使用的技术代码重写,如Moles。不过,我不会推荐这个。相反,你最好使用一个包装类,它将委托调用给一个包含的对象,并且覆盖你仅仅需要改变的特定方法之后的行为。
0
0
我不这么认为。您可以创建一个扩展方法,但不能访问私有/受保护/内部成员。
0
如果你有源代码但不想改变它 - 分支它。
如果你可以用稍微不同的方法签名,写一个扩展方法。
如果以上都不适合您,并且类必须有具有相同的名称,请继承一个具有相同名称的类,覆盖并将该类放置在不同的名称空间中。通过名称空间区分原始。只是继承正常可能会更容易维护,虽然...
如果你仍然不开心,我不能帮你。
0
不是我所知的。你能解释一下你的情况吗?为什么你需要做这样的事情?
0
随着一些涉及反射的重重入侵和reflection emit转化为新的application domain,当然。但我怀疑这是否值得。
相关问题
- 1. 有没有在C#方法继承
- 2. Javascript - 在克隆库中重写继承的方法
- 3. 重载C++继承不编译?
- 4. CPP多态性和继承 - 编译器没有发现方法
- 5. C++编写,从多重继承类
- 6. 编译继承程序C++
- 7. 有没有办法在C#中编写LLVM前端编译器?
- 8. 从继承类重写方法
- 9. Java继承和方法重写程序
- 10. 重写继承泛型方法
- 11. 有没有办法来重写继承的生成策略?
- 12. 扩展方法中重写继承的方法
- 13. 是多重继承一个编译器编写者的问题? - C++
- 14. 在JS中编写原型继承的最干净的方法
- 15. 有没有办法在Python中识别继承的方法?
- 16. 在C#中继承的方法属性?
- 17. 在Java继承中限制重写方法的范围
- 18. 继承相关的C++编译错误
- 19. 没有继承的人如何重写一个类方法并从新方法中调用原始方法?
- 20. 在C#中的继承问题 - 重写内部方法可能吗?
- 21. 在C或C++中,有没有办法扩展一个没有继承的类?
- 22. 私有方法,继承和元编程?
- 23. 继承和方法重载
- 24. C++重写继承的静态常量
- 25. 重写和继承
- 26. 编译后的java继承
- 27. 在MSBuild中重写继承的任务
- 28. 方法在继承的情况下重写
- 29. C++/COM/Proxy Dlls:方法重写/方法转发(COM实现继承)
- 30. C++继承和函数重写
谢谢,你能给我一个包装类的例子吗?另一个问题是编译类需要调用这些类中的其他方法,所以如果我重写它们,它们需要调用重写的方法。 – markvpc 2010-07-01 15:05:31
包装仅适用于您使用该类,因为您可以在访问它时构建和使用包装器。包装类上的其他方法不会意识到包装,因此不会按照您的意图工作。您可能需要重新考虑您的设计以完全避免此问题,因为进入IL重写以注入弯路可能会使您的代码难以维护。 – 2010-07-01 15:15:50