2014-12-19 54 views
-1

Func func = a => a.Id;Want Func值

我想從func獲取Id。不是Id的值。

func.invoke()給我的Id值。

根據建議的評論,我試過這個。 但我在GetMemberInfo方法中將成員設爲null。 我想要這種方法。即。我想在字典中存儲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); 
} 
+1

問題是什麼?你有特定的問題嗎?要求人們閱讀你的代碼以瞭解你所問的內容通常會導致追趕它們,特別是如果代碼太大,它不能適合在一個屏幕上 –

+0

@ Panagiotis Kanavos:正如我已經寫道'我知道它的硬描述我想要的是。這就是爲什麼我給運行代碼請調試它。你可以得到我想要的。'那就是爲什麼我給出了運行代碼。這樣任何人都可以理解它。 –

+1

@HemantMalpote ** Noone **將運行你的代碼來破譯你所問的內容。這看起來很簡單,「我無法從字典中獲得價值」,但讓我幫助你,請問一個具體問題。不要誤解我的意思......你提供了所有必要的代碼來複制你的問題是非常好的......我真的很感謝......我不明白你想解決的問題是什麼。 – Kevin

回答

0

您幾乎已經回答了您自己的問題。假設MydeptId不帶參數,返回一個int,則:

Func<int> func = (a:SomeType) => a.MydeptId;

然後調用該函數。因此:

int i = func();