为什么建议在.NET中使用反射?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (8)

使用它绝对是一个好习惯吗?

项目中需要反思的可能情况是什么?

提问于
用户回答回答于

Reflection的主要价值在于它可以用来检查组件,类型和成员。这是确定未知组件或对象内容的强大工具,可用于各种情况。

Reflection的反对者会说它速度很慢,与静态代码执行相比是这样 - 但是在整个.NET框架中使用了Reflection,并且假定它没有被滥用,它可以是工具箱中非常强大的工具。

一些有用的应用:

  • 确定程序集的依赖关系
  • 符合接口的位置类型,从基类/抽象类派生,并通过属性搜索成员
  • (臭)测试 - 如果你依赖于一个不可测试的类(也就是说它不允许你轻松地构建一个虚假的类),你可以使用Reflection在类中注入虚假值 - 这不是很好,也不推荐,但它可以是一个绑定中的方便工具。
  • 调试 - 倾出加载的程序集列表,它们的引用,当前方法等...
用户回答回答于

反射有很多用途:

  1. 遍历对象中的属性。
  2. 调用在运行时定义的方法。
  3. 同一脉络上的其他许多其他人。

然而,我最喜欢反射的一个用途是找到已标记属性的属性。

例如,我写了一些属性,用于标记我的类中的哪些属性应该使用Lucene进行索引。在运行时,我可以查看任何类,只需查询类的“标记”属性即可找出需要索引的字段。

扫码关注云+社区