是否可以使用属性来覆盖方法

本文关键字:覆盖 方法 属性 可以使 是否 | 更新日期: 2023-09-27 18:27:18

例如,是否可以用"PetOwner"属性标记一个"Man"类,该属性用创建"Dog"对象的东西覆盖构造函数,并调用"Man"基构造函数?

(并覆盖"Man的"GoForWalk()"方法,以包括与他的狗的交互?)

我对Reflection很陌生,对此很好奇,所以我想我也可以问一下。这是否涉及反射。以某种方式发射?

我也看过这个问题,但我不认为它与我所问的完全相关(我也不完全理解)。

谢谢你的帮助!:)

编辑:这个问题看起来类似于我对的看法

是否可以使用属性来覆盖方法

是与否,取决于您实际想要实现的目标的不同方面,因此更多的信息可能会有所帮助。由于您询问了反思,我得到的印象是,您有现有的库,希望用自己的功能进行扩展,但从您的解释中还不清楚。

.net Framework和C#允许以不同的方式覆盖代码/更改行为,但一切都取决于何时可以获得用于覆盖的信息;在设计时(->典型的OO构造)、编译步骤之后(->面向方面的编程)或编译时(->反射/动态特性)。

大多数情况下,反射是最后的手段,因为它本身就有性能问题需要处理(当然,如果除了使用反射读取属性外,还需要创建额外的代码并执行它)。也就是说,Reflection.Emit确实是覆盖可访问方法的一种方式(通过发出具有相同名称和签名的方法)。