如何使用反射检测字段上的“新”修改器?

时间:2011-07-09 10:54:51

标签: .net reflection

http://msdn.microsoft.com/en-us/library/435f1dw2.aspx

public class Base
{
    public string Field;
}
public class Child : Base
{
    public new string Field;
}

[TestFixture]
public class TestClass
{

    [Test]
    public void DetectNew()
    {
        var fieldInfo = typeof(Child).GetField("Field");
        //How do I tell fieldInfo has a new modifier?
        Debug.WriteLine(fieldInfo);
    }
}

编辑:我知道方法和属性我可以检查“MethodBase.IsHideBySig”。为什么FieldInfo不存在类似的属性?

2 个答案:

答案 0 :(得分:2)

只是一个猜测,但我认为您必须在基类中搜索具有相同名称的成员

您还可以查看两个字段生成的IL,看看是否存在可以通过反射使用的差异。

答案 1 :(得分:1)

此处new的唯一影响是抑制编译器警告。

我的猜测是它在生成的IL中没有留下任何痕迹。

反问题:你为什么感兴趣?只是好奇或者你有实际情况吗?