c# - 生产代码中的 PrivateObject 而不是 Reflection

标签 c# reflection

“反射”是指使用 System.Reflection 命名空间。

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

最佳答案

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

顺便说一句,PrivateObject 内部使用反射,所以无论如何你都要使用它。

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

关于c# - 生产代码中的 PrivateObject 而不是 Reflection,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18619236/

相关文章:

java - 如何安全地删除一个方法,如何知道它是否没有被反射使用?

c# - 我可以找出我正在使用的方法的名称吗?

c# - 使用运行时类型执行的通用方法

c# - 如何使用通用搜索获取实体列表

c# - 项目之间的交互

c# - 无焦点 ComboBoxItem

c# - 为什么我不能将 set 访问器添加到覆盖属性?

c# - 通过反射加载程序集的风险

haskell - 反射是否有不连贯的风险?

c# - SQLite 数据库连接有哪些附加配置信息?