0

辞書が欲しいのですが、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;

アップデート

tyte SimpleActionのオブジェクトが割り当てられており、その参照と名前を辞書に保存したいと考えています。

4

1 に答える 1

1

ToDictionaryLINQのメソッドを使用すると簡単になります。また、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));
于 2012-11-04T06:44:06.773 に答える