c# – 从对象获取属性信息,而不将属性名称作为字符串
发布时间:2020-12-16 00:23:13 所属栏目:百科 来源:网络整理
导读:出于某些原因,我需要创建一个PropertyInfo实例的Dictionary,它对应于某些类的属性(让我们称之为EntityClass). 好的,我可以使用typeof(EntityClass).GetProperties(). 但我还需要确定某些特定属性的值(在编译时已知). 通常我可以做以下其中一项: EntityInsta
出于某些原因,我需要创建一个PropertyInfo实例的Dictionary,它对应于某些类的属性(让我们称之为EntityClass).
好的,我可以使用typeof(EntityClass).GetProperties(). 但我还需要确定某些特定属性的值(在编译时已知). EntityInstance.PropertyX = Value; typeof(EntityClass).GetProperty("PropertyX").SetValue(EntityInstance,Value,null); 为了填满我的字典,我需要使用PropertyInfo实例而不是仅正常设置值.但我觉得通过字符串名称获取属性并不舒服.如果某些EntityClass发生更改,则会带来许多异常而不是编译错误.所以,我要问的是: 如何在不传递字符串名称的情况下获取已知属性的PropertyInfo? SomeDelegateType MyDelegate = EntityInstance.MethodX; 理想的情况是: SomePropertyDelegate MyPropertyDelegate = EntityInstance.PropertyX; 解决方法
像这样的东西?
string s = GetPropertyName<User>( x=> x.Name ); public string GetPropertyName<T>(Expression<Func<T,object>> lambda) { var member = lambda.Body as MemberExpression; var prop = member.Member as PropertyInfo; return prop.Name; } 要么 public PropertyInfo GetPropertyInfo<T>(Expression<Func<T,object>> lambda) { var member = lambda.Body as MemberExpression; return member.Member as PropertyInfo; } public class User { public string Name { set; get; } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |