我可以从Func获取特定的元数据吗?考虑以下代码:stringpropertyName;vardateList=newList(){DateTime.Now};propertyName=dateList.GetPropertyName(dateTimeObject=>dateTimeObject.Hour);//我希望propertyName变量现在包含字符串“Hour”这是扩展方法:publicstaticstringGetPropertyName(thisIListlist,Funcfunc){//TODO:想动态地确定//正在使用哪个属性funcfunction/lambda}有没有办法做到这一点?我想也许这种其他方法,使用Expression而不是Func会让我更有能力找到我需要的东西,但我不知道如何。publicstaticstringGetPropertyName(thisIListlist,Expressionexpr){//如果可能的话,询问expr以获得我想要的东西}这是我第一次用Linq做这么深的事情,所以也许我错过了明显的东西。基本上我喜欢传入lambda的想法,所以我得到了编译时检查,但我不知道我在这种特殊情况下使用它们的想法是如何可行的。谢谢这是我正在使用的版本,它返回一个PropertyInfo,但获取名称很简单。publicstaticPropertyInfoGetProperty(Expression>expression){MemberExpressionmemberExpression=null;如果(expression.Body.NodeType==ExpressionType.Convert){memberExpression=((UnaryExpression)expression.Body).OperandasMemberExpression;}elseif(expression.Body.NodeType==ExpressionType.MemberAccess){memberExpression=expression.BodyasMemberExpression;}if(memberExpression==null){thrownewArgumentException("Notamemberaccess","expression");}返回memberExpression.Member作为PropertyInfo;这是一个非常简单和快速的方法来做这个博客:http://blog.bittercoder.com/PermaLink,guid,206e64d1-29ae-4362-874b-83f5b103727f.aspx所以给出:Funcfunc=Name=>“价值”;您可以通过调用函数委托获取lambda参数“Name”:func.Method.GetParameters()[0].Name(将返回“Name”)这是Andrey修改后的Hash方法:publicDictionaryHash(paramsFunc[]args)whereT:class{varitems=newDictionary();foreach(varfuncinargs){varitem=func(null);items.Add(func.Method.GetParameters()[0].名称,项目);}退换货品;帕特里克希望它有帮助像这样的东西应该可以解决问题:publicstaticstringGetPropertyName(thisIListlist,Expression>expr){如果(member_expression==null)thrownewArgumentNullException("member_expression");MemberInfomember=member_expression.Member;PropertyInfoproperty=memberasPropertyInfo;字符串proname=memeber.name;附带说明:func.Method.GetParameters()[0].Name与编译lambda和提取成员表达式,然后是成员信息,然后是名称相比,速度非常快上面是C#学习教程:我可以得到具体的元数据?如果所有分享的内容对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: