在生产代码中使用PrivateObject而不是Reflection

aus*_*ush 1 c# reflection

通过"反射"我的意思是使用System.Reflection命名空间.

MSDN谈到PrivateObject类:"允许测试代码......".我比System.Reflection更喜欢PrivateObject语法,所以我想知道是否有一个真正的理由不在生产代码中使用它,并仅保留它用于单元测试?

Fab*_*bio 6

我可以让您在生产环境中不使用PrivateObject的一个原因是需要将测试程序集(Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll)部署到生产服务器.那不是他们应该去的地方.但是,如果它不会影响您工作地点的任何政策,则由您决定是否使用它.

顺便说一句,PrivateObject在内部使用Reflection,所以无论如何你都会使用它.

我发现这个解决方案使用动态对象来调用私有成员(http://blogs.msdn.com/b/davidebb/archive/2010/01/18/use-c-4-0-dynamic-to-drastically-simplify -your-private-reflection-code.aspx),因为你不喜欢Reflection的语法.也许你应该试试.