从FieldInfo获取对象实例

时间:2014-09-23 11:02:06

标签: c# reflection

所以我的问题是:我有一个只由FieldInfo表示的对象实例。我没有其他访问该对象的权限。是否可以仅通过字段信息获取该对象实例?

MyObject myObject = fieldInfo.SomeMethodOrProperty as MyObject; 

这只是一个例子,但我认为你可以了解情况。

3 个答案:

答案 0 :(得分:7)

不,FieldInfo表示与类型有关的字段的属性和元数据。它没有附加到特定实例。当您想要使用它时,您必须传入您希望它使用的实例(通过GetValueSetValue

答案 1 :(得分:0)

尽管另一个答案说不,但这是可能的。
我有同样的问题,经过一些测试后我发现这个代码可以工作:

Type oType = typeof(MyClass);
FieldInfo[] aoFieldInfo = oType.GetFields (BindingFlags.Public | BindingFlags.Static);

foreach (FieldInfo oFieldInfo in aoFieldInfo)
{
  object oValue = oFieldInfo.GetValue (null);
}

并返回所有成员的值/对象,我之前查询过FieldInfo

答案 2 :(得分:0)

我知道这很老,但是可以,只要您可以访问所讨论对象的父对象的实例...

例如:

public AxisObject getAxisObjectByName(string name)
    {
        FieldInfo[] Comboproperties = typeof(DrivesObject).GetFields();
        foreach (var property in Comboproperties)
        {
            if (property.Name == name)
            {
                return (AxisObject)property.GetValue(PersistantVariables.Instance.Drives);//pass the instance you're wanting to return child object instance from
            }
        }
        return null;
    }