Я пытаюсь получить имя метода для типа с использованием выражения лямбда. Я использую Windows Identity Foundation и должен определить политики доступа с именем типа с пространством имен в качестве ресурса и именем метода в качестве действия. Вот пример.
Это тип, из которого я получаю имя типа и имя метода:
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" в качестве действия. Получение имени типа с пространством имен не представляет проблемы, но я не думаю, что могу использовать лямбда для метода, который я пытаюсь сделать.
public static IPermissionExp Performing<T>(
this IActionExp<T> exp,
Func<T, delegate???> action) {} //this is where I don't know what to define
Можно ли это делать? Есть ли другой способ делать такие вещи без использования магических строк?