这个问题已经在这里有了答案 :
7年前关闭。
可能的重复: .NET反射的成本是多少?
我目前的编程思想是反思是我最好的朋友。我经常使用它来动态加载允许“宽松实现”而不是严格接口的内容,以及许多自定义属性。
使用反射的“实际”成本是多少?
对于频繁反映的类型进行缓存反映是否值得付出努力,例如在表定义的所有属性上使用我们自己的LINQ DAL前对象代码吗?
缓存内存占用量是否会超过反射CPU的使用量?
反射需要加载并处理大量类型的元数据。这会导致更大的内存开销和较慢的执行。根据本文,属性修改的速度要慢2.5到3倍,而方法调用的速度要慢3.5到4倍。
这是一篇很棒的MSDN文章,概述了如何使反射更快以及开销在哪里。如果您想了解更多信息,我强烈建议您阅读。
反射还会增加代码的复杂性,这会使代码更加混乱,因此很难使用。像斯科特·汉塞尔曼(Scott Hanselman)这样的人相信,通过反思,您经常遇到的问题比您解决的更多。如果您的团队主要是初级开发人员,则尤其如此。
如果您需要大量动态行为,则最好研究一下DLR(动态语言运行时)。随着.NET 4.0中的新更改,您可能需要查看是否可以将其中的某些内容合并到解决方案中。VB和C#对动态的附加支持使动态代码的使用非常优雅,并且可以很直接地创建自己的动态对象。
祝好运。
编辑:我在斯科特(Scott)的网站上做了更多的戳记,并在反思中发现了这个播客。我没有听过,但也许值得。