在线等待 泛型反射无法获取及设置属性

宝贝一路向前 2012-05-11 04:11:01
如以下代码:
public class A{
public string name="";
public string value="";
}

public T ToObject<T>(string request) where T : class,new()
{
T obj = new T();

string [] nameValue = request.Split('=');

PropertyInfo property = obj.GetType().GetProperty(nameValue[0]);

if(property != null && property.CanWrite)
{
property.SetValue(obj,nameValue[1],null);
}
}

调用 A test = ToObject<A>("value=123456");

跟踪后,property 为 null , 无法获取到 属性

代码中那有发生异常导致无法按属性名称来获取属性。


...全文
136 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
宝贝一路向前 2012-05-11
  • 打赏
  • 举报
回复
谢谢,搞了一下午,看来写类还是规范点好!
黄瓜黄瓜 2012-05-11
  • 打赏
  • 举报
回复

public string Name
{
get;
set;
}



变成这样就不会报错啦
宝贝一路向前 2012-05-11
  • 打赏
  • 举报
回复
如果获取全部属性

PropertyInfo[] propertys = typeof(T).GetProperties();

则有报错

GenericParameterPosition = “(typeof(T)).GenericParameterPosition”引发了“System.InvalidOperationException”类型的异常

DeclaringMethod = “(typeof(T)).DeclaringMethod”引发了“System.InvalidOperationException”类型的异常

GenericParameterAttributes = “(typeof(T)).GenericParameterAttributes”引发了“System.InvalidOperationException”类型的异常



也修改了 class A

加了构造函数
public class A{
public A(){
}

public string name="";
public string value="";
}

111,126

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧