“反射”是指使用 System.Reflection 命名空间。
MSDN 谈到 PrivateObject 类:“允许测试代码......”。与 System.Reflection 相比,我更喜欢 PrivateObject 语法,所以我想知道是否有真正的理由不在生产代码中使用它,而只保留它用于单元测试?
“反射”是指使用 System.Reflection 命名空间。
MSDN 谈到 PrivateObject 类:“允许测试代码......”。与 System.Reflection 相比,我更喜欢 PrivateObject 语法,所以我想知道是否有真正的理由不在生产代码中使用它,而只保留它用于单元测试?
我可以告诉您不在生产环境中使用 PrivateObject 的一个原因是需要将测试程序集 (Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll) 部署到生产服务器。那不是他们应该在的地方。但是,如果它不会损害您工作地点的任何政策,则由您决定是否使用它。
顺便说一句,PrivateObject 内部使用反射,所以无论如何你都要使用它。
我发现这个解决方案使用动态对象来调用私有成员(http://blogs.msdn.com/b/davideb/archive/2010/01/18/use-c-4-0-dynamic-to-drastical-simplify -your-private-reflection-code.aspx),因为您不喜欢 Reflection 的语法。也许你应该试试。
你不能PrivateObject
用来实际反映一个类型。换句话说:您不能使用它来获取类型的成员。
只有事先知道成员的姓名才能使用它。
也就是说,如果这些限制在您的场景中无关紧要,我看不出您不应该被允许使用它的原因。
该类是public
,有据可查,不被弃用。