例如,是否可以使用'PetOwner'属性标记'Man'类,该属性会使用创建'Dog'对象的内容覆盖构造函数以及调用'Man'基础构造函数?
(并覆盖'Man的'GoForWalk()'方法以包含与他的狗的互动?)
我对Reflection非常陌生,对此很好奇所以我想我也可以问。 这是否涉及Reflection.Emit以某种方式?
我也看过this问题,但我不认为这完全与我的要求有关(我也不完全理解)。
感谢您的帮助! :)
编辑:This question看起来与我的目标类似
答案 0 :(得分:2)
是和否,这取决于您实际想要实现的不同方面,因此更多信息可能会有所帮助。由于您询问有关反射的问题,因此我认为您希望使用自己的功能扩展现有库,但您的解释并不清楚。
.net Framework和C#允许不同的方法来覆盖代码/改变行为,但一切都取决于覆盖信息何时可用;在设计时( - >典型的OO构造),在编译步骤( - >面向方面编程)之后或在编译时( - >反射/动态特征)。
大多数情况下,反射是最后的手段,因为它本身就具有性能影响(当然,除了使用反射来读取属性之外,还需要创建其他代码并执行它)。 话虽这么说,Reflection.Emit确实是一种覆盖可访问方法的方法(通过发出一个具有相同名称和签名的方法)。