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

C#通过属性名动态获取属性值分享

时间:2023-04-10 21:13:40 C#

C#通过属性名动态获取属性值我想解决的问题是如何写一个以属性名为参数的方法一个字符串,并返回对属性值的赋值。我的模型类声明是这样的:publicclassFoo{publicintFooIdpublicintparam1publicdoubleparam2}在我的方法中,我希望做类似varproperty=GetProperty("param1)varproperty2=GetProperty("param2")I'我目前正在尝试使用publicdynamicGetProperty(string_propertyName){varcurrentVariables=m_context.Foo.OrderByDescending(x=>x.FooId).FirstOrDefault();varparameter=Expression.Parameter(typeof(Foo),"Foo");varproperty=Expression.Property(parameter,_propertyName);varlambda=Expression.Lambda(parameter);}这是正确的方法吗?如果是这样,是否可以使其成为动态类型返回?答案是正确的,这使它变得太复杂了。现在的解决方案是:publicdynamicGetProperty(string_propertyName){varcurrentVariables=m_context.Foo.OrderByDescending(g=>g.FooId).FirstOrDefault();返回currentVariables.GetType().GetProperty(_propertyName).GetValue(currentVariables,null);}publicstaticobjectReflectPropertyValue(objectsource,stringproperty){returnsource.GetType().GetProperty(property).GetValue(source,null);您将使用您提供的示例进行回退。您正在寻找的方法:publicstaticobjectGetPropValue(objecttarget,stringpropName){returntarget.GetType().GetProperty(propName).GetValue(target,null);但是对于“var”和“dynamic”、“Expression”和“Lambda”……你一定会在6个月后迷失在这段代码中。坚持简单的写作方式。以上是C#学习教程:C#根据属性名动态访问属性值共享的所有内容,不代表立场,如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: