当前位置: 首页 > 编程语言 > C#

从对象中获取属性信息,无需将属性名作为字符串共享

时间:2023-04-10 18:28:13 C#

从对象中获取属性信息,无需将属性名作为字符串共享由于某些原因,我需要创建一个PropertyInfo实例的字典,它对应于一些属性类(我们称它为EntityClass)。好的,我可以使用typeof(EntityClass).GetProperties()。但我还需要确定某些特定属性的值(在编译时已知)。通常我可以执行以下操作之一:EntityInstance.PropertyX=Value;typeof(EntityClass).GetProperty("PropertyX").SetValue(EntityInstance,Value,null);要填写我的字典,我需要使用PropertyInfo实例而不是Normal设置值。但我不太愿意通过字符串名称获取属性。如果某个EntityClass发生变化,它会带来很多异常而不是编译错误。所以,我要问的是:如何在不传递字符串名称的情况下获取已知属性的PropertyInfo?如果有这样的代表,我会很高兴:SomeDelegateTypeMyDelegate=EntityInstance.MethodX;理想情况下:SomePropertyDelegateMyPropertyDelegate=EntityInstance.PropertyX;是这样的吗?strings=GetPropertyName(x=>x.Name);publicstringGetPropertyName(Expression>lambda){varmember=lambda.BodyasMemberExpression;varprop=member.MemberasPropertyInfo;返回道具名称;}或publicPropertyInfoGetPropertyInfo(Expression>lambda){varmember=lambda.BodyasMemberExpression;返回member.Member作为PropertyInfo;}publicclassUser{publicstringName{set;得到;不确定你需要什么,但可能会帮助你开始。以上就是C#学习教程:Getattributeinformationfromobjectswithoutsharingtheattributenameasastring。如果对大家有用,需要进一步了解C#学习教程,希望大家多多关注——publicclassProperty{privatereadonlyTObj_instance;私有只读PropertyInfo_propInf;publicProperty(TObjo,Expression>expression){_propInf=((PropertyInfo)((MemberExpression)expression.Body).Member);_实例=o;}publicTPropValue{get{return(TProp)_propInf.GetValue(_instance);}set{_propInf.SetValue(_instance,value);}}}publicclassUser{publicstringName{get;放;}}varuser=newUser();varname=newProperty(user,u=>u.Name);name.Value="穆罕默德";Console.WriteLine(name.Value==user.Name);//打印为真本文收集自网络,不代表立场,如涉及侵权,请点击右边联系管理员删除。如需转载请注明出处: