【发布时间】:2015-02-18 13:08:46
【问题描述】:
Func func = a => a.Id;
我想从 func 中获取 Id。不是 Id 的值。
func.invoke() 给我 Id 的值。
根据建议的评论,我尝试了这个。 但是我在 GetMemberInfo 方法中将成员设为 null。 我想要这种方法。 IE。我想在字典中存储 func。然后从字典中获取该函数并获取 Id 的名称。
public static MemberInfo GetMemberInfo<T, U>(Expression<Func<T, U>> expression)
{
var member = expression.Body as MemberExpression;
if (member != null)
return member.Member;
throw new ArgumentException("Expression is not a member access", "expression");
}
static void Main(string[] args)
{
Dictionary<int, Func<Soure.Employee, int>> testDir = new Dictionary<int, Func<Soure.Employee, int>>();
testDir.Add(1, p => p.Id);
var testDirValue = testDir[1];
Expression<Func<Soure.Employee, int>> expr1 = mc => testDirValue(mc);
MemberInfo member = Program.GetMemberInfo(expr1);
Console.WriteLine(member.Name);
}
【问题讨论】:
-
问题是什么?你有具体的问题吗?要求人们阅读您的代码以了解您的要求通常会导致他们被赶走,特别是如果代码太大而无法放在单个屏幕中
-
@Panagiotis Kanavos :正如我已经写过的那样,我知道很难描述我想要什么。这就是为什么我给出运行代码请调试它。你可以得到我想要的。这就是我给出运行代码的原因。让任何人都能理解。
-
@HemantMalpote Noone 将运行您的代码来破译您的要求。这似乎就像“我无法从字典中获取值”一样简单,但为了让我帮助您,请提出一个具体问题。不要误会我的意思...您提供了复制问题所需的所有代码真是太好了...我真的很感激...我只是无法理解您要解决的问题是什么。跨度>
-
@ Kevin 基本上我正在存储字典,其中包含作为映射位置的键和将执行的值作为函数的函数,返回值将设置为键。执行 func 和赋值是后面的部分。现在我想要将映射到目的地的属性名称。并且该值将用于分配值逻辑。如果我写了指定的函数,我可能需要解释很多。这就是为什么我给出了整个运行代码。这样任何人都可以运行它。
-
@HemantMalpote 请编辑您的问题并添加此信息...但是我仍然不明白您遇到的问题是什么。
标签: c# asp.net asp.net-mvc linq delegates