Я пытаюсь получить имя метода для типа с использованием выражения лямбда. Я использую 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» в качестве действия. Получение имени типа с пространством имен не представляет проблемы, но я не думаю, что могу использовать лямбда для метода, который я пытаюсь сделать.
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
Не имеет значения, что делает AddItem, мне просто нужно имя метода без использования магических строк. – awilinsk
Это своего рода вопрос. Я думаю, что вы возглавляете Action, но я не думаю, что это лучший ответ. –
pdr