C# 如何实现特性的自动反射?

2020-07-03 20:57发布

问题:

C# 的特性是配合反射用的,平时我往往只是把特性当成附加标签的功能,而一些项目似乎有更高级的用法。

比如 Fody 旗下的诸多项目。添加了特性后,产生了魔法效果,我并没有看到对应的反射代码,那特性是如何起作用的呢?

回答1:

Fody 不是什么反射哈,比反射还高级,是代码注入,相当于把IL改了。如果反射都能办到,我还用什么Fody。



回答2:

除了反射,还有一种方式 emit



回答3:

Fody是好像通过扩展编译器实现的,在编译期反射并生成相关结果,可以认为是反射代码在Fody自身的编译器中。