使用反射设置对象属性
在C#中,有什么方法可以使用反射来设置对象属性?
例如:
MyObject obj = new MyObject();obj.Name = "Value";
我想开始obj.Name
思考。就像是:
Reflection.SetProperty(obj, "Name") = "Value";
有办法吗?
回答:
是的,您可以使用Type.InvokeMember()
:
using System.Reflection;MyObject obj = new MyObject();
obj.GetType().InvokeMember("Name",
BindingFlags.Instance | BindingFlags.Public | BindingFlags.SetProperty,
Type.DefaultBinder, obj, "Value");
如果obj
没有名为的属性Name
,或者无法设置,则会抛出异常。
另一种方法是获取属性的元数据,然后进行设置。这将允许您检查属性的存在,并验证是否可以设置:
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);
}
以上是 使用反射设置对象属性 的全部内容, 来源链接: utcz.com/qa/410966.html