UareBugged Ответов: 0

Информация подполе обновление поля


Хороший день,

Мне нужно сделать функцию, которая будет итерировать по словарю, хранящему имя переменной и новое значение переменной. После этого мне нужно обновить переменную класса с этим значением.

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 немного и вызывать его рекурсивно.

0 Ответов