Windows 8应用程序中的反射

5
我正在进行单元测试,测试的是一个类,其中包含两个私有成员变量。我创建了一个继承于被测试类的类。
起初,我只将想要访问的变量设置为protected,但我认为如果我能保持它们的私有性并使用反射来访问它们会很酷。我谷歌搜索了一些文章(和这里提出的问题:https://dev59.com/c1HTa4cB1Zd3GeqPTKKP
相关的SO问题说:
// _commandCollection is an instance, private member
BindingFlags flags = BindingFlags.Instance | BindingFlags.NonPublic;

// Retrieve a FieldInfo instance corresponding to the field
FieldInfo field = GetType().GetField("_commandCollection", flags);

// Retrieve the value of the field, and cast as necessary
IDbCommand[] cc =(IDbCommand[])field.GetValue(this);

然而,没有GetField()方法。我尝试了一个看起来类似的方法GetRuntimeField()但是它不起作用。

在我的代码(继承类)中:

public List<BaseData> RealAllData
{
    get
    {
        // Use reflection to access the private variable
        FieldInfo field = GetType().GetRuntimeField("mAllData");
        return (List<BaseData>)field.GetValue(this);
    }
}

如果有人知道为什么这不起作用,我将非常感激。谢谢。

3
这个区域是关于 .NET Framework for Windows Store Apps 中的 Reflection 吗?还是说那是另外一件事情? - AakashM
是的,那篇文章帮助我入门了。谢谢。 - Luke
1个回答

1

您还可以将反射代码放入针对.NET 4和Windows Store应用程序的便携式类库中。然后,您将可以访问“旧”的反射API,包括BindingFlags等。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接