Ja, Sie können die Type.InvokeMember()
:
using System.Reflection;
MyObject obj = new MyObject();
obj.GetType().InvokeMember("Name",
BindingFlags.Instance | BindingFlags.Public | BindingFlags.SetProperty,
Type.DefaultBinder, obj, "Value");
Es wird eine Ausnahme ausgelöst, wenn obj
hat keine Eigenschaft namens Name
oder es kann nicht eingestellt werden.
Ein anderer Ansatz besteht darin, die Metadaten für die Eigenschaft abzurufen und sie dann festzulegen. So können Sie prüfen, ob die Eigenschaft vorhanden ist und ob sie eingestellt werden kann:
using System.Reflection;
MyObject obj = new MyObject();
PropertyInfo prop = obj.GetType().GetProperty("Name", BindingFlags.Public | BindingFlags.Instance);
if(null != prop && prop.CanWrite)
{
prop.SetValue(obj, "Value", null);
}