使用Reflection查找私有接口字段?

时间:2009-11-11 07:54:13

标签: c# reflection webforms

鉴于此课程

public partial class Default : Page
{
    private IRepository repo;
    ...
}

我想查找并设置私有repo字段。那可能吗?

更新

我尝试使用GetFields(BindingFlags.NonPublic),它会返回{System.Reflection.FieldInfo[0]}

更新II

我尝试使用GetFields(BindingFlags.NonPublic | BindingFlags.Instance) ,它会返回Page但不是repo的所有字段。

2 个答案:

答案 0 :(得分:3)

使用允许您指定标志的GetFields重载:

GetFields(BindingFlags.NonPublic | BindingFields.Instance)

答案 1 :(得分:0)

您可以使用以下代码:

MemberInfo [] mi = System.Runtime.Serialization.FormatterServices.GetSerializableMembers(MyType);

并转换FieldInfo fi =(FieldInfo)mi [i]; 此代码返回Serializable Members(privates)