【问题标题】:Want Func value想要 Func 值
【发布时间】: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


【解决方案1】:

您几乎已经回答了自己的问题。假设 MydeptId 不带参数并返回一个 int,那么:

Func&lt;int&gt; func = (a:SomeType) =&gt; a.MydeptId;

然后你调用这个函数:

int i = func();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-08-19
    • 2014-05-11
    • 2014-11-30
    • 1970-01-01
    • 1970-01-01
    • 2010-10-22
    相关资源
    最近更新 更多