我試圖在使用lambda表達式的類型上獲取方法的名稱。我正在使用Windows Identity Foundation,需要使用名稱空間作爲資源和方法名稱作爲操作來定義類型名稱的訪問策略。這是一個例子。獲取使用Lambda表達式的方法名稱
這是我會得到的類型名稱和方法名類型從:
namespace My.OrderEntry {
public class Order {
public void AddItem(string itemNumber, int quantity) {}
}
}
這就是我想通過DSL來定義訪問策略:
ForResource<Order>().Performing(o => o.AddItem).AllowUsersHaving(new Claim());
從該聲明中,我希望將「My.OrderEntry.Order」作爲資源並將「AddItem」作爲該操作。使用名稱空間獲取類型名稱是沒有問題的,但我不認爲我可以使用lambda作爲我想要做的方法。
public static IPermissionExp Performing<T>(
this IActionExp<T> exp,
Func<T, delegate???> action) {} //this is where I don't know what to define
這種事情甚至可以做到嗎?有沒有另一種方法來做這種事情,而不使用魔術字符串?
AddItem應該添加什麼? – pdr 2010-02-22 21:36:10
AddItem的作用並不重要,我只需要不使用魔術字符串的方法的名稱。 – awilinsk 2010-02-22 21:38:54
這種事很重要。我認爲你的目標是一個行動但我不認爲這是最好的答案。 –
pdr
2010-02-22 21:42:06