Метод, который установит свойство с заданным именем:
public void SetProperty(String propertyName, object value)
{
this.GetType().GetProperty(propertyName).SetValue(this, value);
}
Несколько вещей о реализации:
this
необходимо снова передать в вызов SetValue()
. Вторая часть вашего вопроса, чтобы перебирать список свойств, может быть решена с помощью GetProperties()
, чтобы получить все свойства объекта, включая унаследованные:
var properties = this.GetType().GetProperties();
Попробуйте использовать xpath , чтобы найти нужные теги, например, вы можете заменить этот код:
Phone = element[3][0].text
phone_list.append(Phone)
AreaCode = element[3][1].text
phone_list.append(AreaCode)
person.append(phone_list)
примерно так:
phone_list = [e.text for e in element.findall('Phone//')]
person.append(phone_list)
или это (на мой взгляд, лучший вариант):
person.append([e.text for e in element.findall('Phone//')])
Таким образом, вы сможете обойти ошибку и значительно сократить объем кода:)