У меня есть экземпляр объекта. В конструкторе объекта я хотел бы разрешить пользователю передавать в словарь, с помощью которого можно инициализировать, а некоторые, если не все свойства объекта. Теперь вместо того, чтобы использовать условное выражение, я бы хотел использовать рефлексию, отразить свойства, содержащиеся в экземпляре объекта, и если имя свойства сопоставляется с ключом в словаре, обновите значение свойства с соответствующим значением в словаре.Reflection Инициализировать свойства Значения объекта Instance Использование
При работе над этим, у меня есть следующий код, но он не обновляет значение экземпляра моего объекта. Понравилась бы какая-нибудь помощь, чтобы это работало, пожалуйста?
public void Initialize()
{
if (Report.GlobalParameters != null)
{
PropertyInfo[] propertyInfos = this.GetType().GetProperties(BindingFlags.Public | BindingFlags.Instance);
foreach (PropertyInfo propertyInfo in propertyInfos)
{
if (Report.GlobalParameters.ContainsKey(propertyInfo.Name))
{
Type type = this.GetType();
PropertyInfo property = type.GetProperty(propertyInfo.Name);
property.SetValue(this, Report.GlobalParameters[propertyInfo.Name], null);
}
}
}
}
Образец объекта был бы хорош (только на свойство, которое показывает «не обновляет значение экземпляра моего объекта»). Также может быть хорошей идеей упростить выборку в столбце, чтобы использовать жестко заданное имя и значение. –
Я пробовал свой код на объекте Person, который я создал, и он работает хорошо, никаких проблем вообще! !! –
Спасибо, я проверил и, похоже, сейчас работает нормально. Не знаю, что я изменил. Благодарю. – Kobojunkie