化妆品网站源码asp,给老外做兼职的网站,一键分享到wordpress,wordpress双语版转载自诗人江湖老#xff0c;原文地址 C#中利用反射能够获取对象的属性信息#xff0c;也可以利用反射给对象赋值。 我们如果想利用凡是给一个对象属性赋值可以通过PropertyInfo.SetValue()方式进行赋值#xff0c;但要注意值的类型要与属性保持一致。 假设我们有如下…转载自诗人江湖老原文地址 C#中利用反射能够获取对象的属性信息也可以利用反射给对象赋值。 我们如果想利用凡是给一个对象属性赋值可以通过PropertyInfo.SetValue()方式进行赋值但要注意值的类型要与属性保持一致。 假设我们有如下一个结构
struct Person
{public string code{get; set;}public string name{get; set;}
} 下面一段代码展示了如何利用反射来给对象赋值
Person p new Person(){code123456, nameJay};
Person itemnew Person();
PropertyInfo[] propsp.GetType().GetProperties();
props.ToList().ForEach(pi{if (!pi.PropertyType.IsGenericType){if (pi.GetValue(p) ! null){pi.SetValue(item, Convert.ChangeType(pi.GetValue(p), pi.PropertyType));}}else{Type genericTypeDefinition pi.PropertyType.GetGenericTypeDefinition();if (genericTypeDefinition typeof(Nullable)){if (pi.GetValue(p) ! null){pi.SetValue(item, Convert.ChangeType(pi.GetValue(p), Nullable.GetUnderlyingType(pi.PropertyType)));}}}); pi.SetValue(item, Convert.ChangeType(pi.GetValue(p), pi.PropertyType)) pi.SetValue(item, Convert.ChangeType(pi.GetValue(p), Nullable.GetUnderlyingType(pi.PropertyType))) 这两行代码分别是给非泛型属性赋值和给泛型属性赋值。