将类的字段与其名称进行比较

时间:2012-11-04 06:36:01

标签: c# .net

我想要一个Dictionary,其中value是myClass类型的字段,key是该字段的名称。我试过FieldInfo:

actions = new Dictionary<string, myClass> ();
FieldInfo[] fields = triggerScript.GetType().GetFields(BindingFlags.Public | BindingFlags.Instance);
int iterator = 0;

for (int i = 0; i < fields.Length; i++) 
{
    var field = fields[i];
    if (field.FieldType == typeof(myClass))
    {
        actions.Add (fields[i].Name, fields[i].GetValueDirect());
    }
}

但FieldInfo不包含对其描述的字段的引用。我怎么能这样做?


实施例

public SimpleAction OnClick;

在词典中:

  

键 - OnClick;

     

值 - (SimpleAction)OnClick;

更新

我有一个为简单的SimpleAction指定的对象,并且想要将它的引用和名称存储在字典中。

1 个答案:

答案 0 :(得分:1)

您可以使用LINQ中的ToDictionary方法更简单。另外,要获取Field的值,请使用方法GetValue

var actions = triggerScript.GetType()
           .GetFields(BindingFlags.Public | BindingFlags.Instance)
           .Where(field => field.FieldType == typeof (SimpleAction))
           .ToDictionary(field => field.Name, 
                         field => (SimpleAction)field.GetValue(triggerScript));