cta*_*cke 32
在我正在研究的一种产品中,我们经常使用它,但是反射是一种复杂,缓慢的野兽.不要因为听起来很有趣或有趣而去寻找使用它的地方.当您遇到无法以任何其他方式解决的问题时,您将使用它(为插件或框架动态加载程序集,程序集检查,在构建时不知道类型的工厂等).当然值得一看反思教程,看看它是如何工作的,但不要陷入"有锤子,一切看起来像钉子"的陷阱.它有非常专业的用例.
Har*_*lby 28
我在C#中使用Reflection内容的唯一地方是工厂模式,我根据配置文件信息创建对象(在我的例子中是网络侦听器).配置文件提供了程序集的位置,其中类型的名称以及所需的任何其他参数.工厂挑选了这些东西并根据它创建了听众.
Otá*_*cio 11
我不知道它是否是一个模式,但我使用反射从DAO的类定义生成SQL.
我曾在很多地方使用过反射.主要的广泛类别包括:
模式明智,我不确定模式是什么.所有用法之间的共同线程是名称引用和后期绑定 - 您希望在运行时绑定到成员.当您动态加载程序集并且不知道需要创建/操作的目标类型时,通常会出现这种情况.
使用反射是强大的,但它不会让你在派对上更受欢迎.仅在耦合故意弱的地方使用.如此虚弱,以至于你希望它在运行时中断.一个很好的例子是WPF中的数据绑定.
我不确定反模式,但肯定会与在运行时做的事情有关,应该在编译时完成...