C# 怎么判断一个字符串是否是一个类的字段属性
例如strings="num";然后我有一个A类classA{publicintnum{get;set;}}如此我能通过s的值去访问A类的num字段么?实例化下:Aa=n...
例如 string s = "num"; 然后我有一个A类 class A { public int num {get;set;} } 如此我能通过s的值去访问A类的num字段么?
实例化下:A a=new A(); a.num=0;
怎么访问这个值? 展开
实例化下:A a=new A(); a.num=0;
怎么访问这个值? 展开
1个回答
展开全部
反射(Reflection)是.NET中的重要机制,通过放射,可以在运行时获得.NET中每一个类型(包括类、结构、委托、接口和枚举等)的成员,包括方法、属性、事件,以及构造函数等。还可以获得每个成员的名称、限定符和参数等。有了反射,即可对每一个类型了如指掌。如果获得了构造函数的信息,即可直接创建对象,即使这个对象的类型在编译时还不知道。
Type t = typeof(A);
FieldInfo field = t.GetField(s); //这里s就是你想要num
http://visionsky.blog.51cto.com/733317/368576/
Type t = typeof(A);
FieldInfo field = t.GetField(s); //这里s就是你想要num
http://visionsky.blog.51cto.com/733317/368576/
追问
大哥你这个方法不行,我之前就是这种方法。这个方式适合查询类的字段已赋值的,通过实例化赋值的这种方法查不到。
追答
public object ContainProperty(object instance, string propertyName)
{
if (instance != null && !string.IsNullOrEmpty(propertyName))
{
PropertyInfo _findedPropertyInfo = instance.GetType().GetProperty(propertyName);
if (_findedPropertyInfo != null)
return _findedPropertyInfo.GetValue(instance, null);
}
return null;
}
A a = new A();
a.Num = 10;
string s = "Num";
object result = ContainProperty(a, s);
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询