Ответ 1
objName.GetType().GetProperty("nameOfProperty").SetValue(objName, objValue, null)
Возможный дубликат:
.Net - Свойство свойства объекта отражения
Установка свойства путем отражения со строковым значением
Я уверен, что есть простой способ сделать это, и я толстый, но я не могу понять это для меня.
У меня есть объект с несколькими свойствами. Позвольте вызвать объект objName. Я пытаюсь создать метод, который просто обновляет объект с новыми значениями свойств.
Я хочу иметь возможность сделать следующее в методе:
private void SetObjectProperty(string propertyName, string value, ref object objName)
{
//some processing on the rest of the code to make sure we actually want to set this value.
objName.propertyName = value
}
и, наконец, вызов:
SetObjectProperty("nameOfProperty", textBoxValue.Text, ref objName);
Надеюсь, что вопрос достаточно близок. Дайте мне знать, если вам нужна дополнительная информация.
Спасибо всем за ответы!
objName.GetType().GetProperty("nameOfProperty").SetValue(objName, objValue, null)
Вы можете использовать Reflection, чтобы сделать это, например.
private void SetObjectProperty(string propertyName, string value, object obj)
{
PropertyInfo propertyInfo = obj.GetType().GetProperty(propertyName);
// make sure object has the property we are after
if (propertyInfo != null)
{
propertyInfo.SetValue(obj, value, null);
}
}
Вы можете использовать Type.InvokeMember, чтобы сделать это.
private void SetObjectProperty(string propertyName, string value, rel objName)
{
objName.GetType().InvokeMember(propertyName,
BindingFlags.Instance | BindingFlags.Public | BindingFlags.SetProperty,
Type.DefaultBinder, objName, value);
}
Сначала введите информацию о свойствах, а затем установите значение свойства:
PropertyInfo propertyInfo = objName.GetType().GetProperty(propertyName);
propertyInfo.SetValue(propertyInfo, value, null);
Вы можете сделать это через отражение:
void SetObjectProperty(object theObject, string propertyName, object value)
{
Type type=theObject.GetType();
var property=type.GetProperty(propertyName);
var setter=property.SetMethod();
setter.Invoke(theObject, new ojbject[]{value});
}
ПРИМЕЧАНИЕ. Обработка ошибок преднамеренно исключена для удобства чтения.