Информация подполе обновление поля
Хороший день,
Мне нужно сделать функцию, которая будет итерировать по словарю, хранящему имя переменной и новое значение переменной. После этого мне нужно обновить переменную класса с этим значением.
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); } }
Это работает, но я хочу немного улучшить ситуацию и абсолютно не знаю, возможно ли это.
Как вы можете видеть, эта функция может принимать любой класс, а не только один конкретный.
Если у меня есть такой класс, как этот
class test { public string age; }
И я бы использовал функцию таким образом, это сработало бы.
UpdateValues(typeof(test), new Dictionary<string, string>{{"age", "17"}});
Проблема в том, что если у меня есть такой класс, и я хотел бы обновить "подполе" (поле в поле)
class test { public string age; } class test2 { public test data; }
Я думал, что синтаксис может быть чем-то вроде этого, но я понятия не имею, как я мог бы это сделать.
UpdateValues(typeof(test2), new Dictionary<string, string>{{"data.age", "17"}});
Чтобы подвести итог, мне нужно сделать функцию, которая будет принимать класс, хранящийся в другом классе. Функция будет перебирать через словарь и обновлять поля класса и даже ее подполя.
Что я уже пробовал:
Я уже сделал рабочую функцию, которая может редактировать дочернюю переменную какого-то объекта.
Tomas Takac
Вы на правильном пути, точечная нотация-это хорошая идея. Теперь нужно просто рефакторинг UpdateValues немного и вызывать его рекурсивно.