我想要一个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指定的对象,并且想要将它的引用和名称存储在字典中。
答案 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));