Вы можете использовать метод GetProperty
типа instance
, чтобы найти свойство, имя которого соответствует строке, а затем вызвать SetValue
для этого свойства, чтобы установить значение в экземпляре.
Если свойство name
не найдено, GetProperty
вернет null
, поэтому я использовал оператор ?.
, чтобы защититься от этого.
Также былопечатка в исходном образце - вы звонили Split
на strArr
(массив) вместо strArr[i]
(строка).
XClass instance = new XClass();
for (int i = 0; i < strArr.Length; i++)
{
var parts = strArr[i].Split(':');
if (parts.Length < 2) continue;
var propName = parts[0];
var propValue = parts[1];
instance.GetType().GetProperty(propName)?.SetValue(instance, propValue);
}
Обратите внимание, что этот код будет работать так же, как для образцаВы указали, но propValue
должен иметь правильный тип (string
в данном случае), чтобы он работал.Поэтому необходимо добавить дополнительную обработку ошибок, чтобы сделать эту работу более обобщенной.