vendredi 23 décembre 2016

FieldInfo get subfield from field

Good day,

I need to make function that will iterate on Dictionary that stores variable name and variable value. After that, I need to update class variable with that value.

void UpdateValues(Type type, Dictionary<string, string> values)
{
    foreach (var value in values)
    {
        var fieldInfo = selected.GetComponent(type).GetType().GetField(value.Key);
        if (fieldInfo == null) continue;

        fieldInfo.SetValue(selected.GetComponent(type), value.Value);
    }
}

It works but I want little improvement and I absolutely don't know if it is possible. As you can see, that function can accept any class, not just one specific.

If I have class like this

class test
{
    public string age;
}

And I would use function this way, it would work.

UpdateValues(typeof(test), new Dictionary<string, string>age);

Problem is if I have class like this and I would like to update "subfield" (field in field)

class test
{
    public string age;
}

class test2
{
    public test data;
}

I was thinking that syntax could be something like this, but I have no idea how could I do it.

UpdateValues(typeof(test2), new Dictionary<string, string>data.age);

To sum it up, I need to make function that will take class that is stored in another class. Function will iterate trough the dictionary and update fields of class and even her subfields.





Aucun commentaire:

Enregistrer un commentaire