Próbuję uzyskać nazwę metody na typ za pomocą wyrażenia lambda. Używam Windows Identity Foundation i muszę zdefiniować zasady dostępu z nazwą typu z przestrzenią nazw jako zasobem i nazwą metody jako akcją. Oto przykład.Uzyskaj nazwę metody za pomocą wyrażeń Lambda
Jest to rodzaj chciałbym być coraz nazwę typu i nazwy metody od:
namespace My.OrderEntry {
public class Order {
public void AddItem(string itemNumber, int quantity) {}
}
}
ten sposób chciałbym określić zasady dostępu przez DSL:
ForResource<Order>().Performing(o => o.AddItem).AllowUsersHaving(new Claim());
Od to oświadczenie, chciałbym, aby "Moja.OrderEntry.Order" jako zasób i "AddItem" jako działanie. Uzyskanie nazwy typu z przestrzenią nazw nie jest problemem, ale nie sądzę, żebym mógł użyć lambda dla metody, którą próbuję wykonać.
public static IPermissionExp Performing<T>(
this IActionExp<T> exp,
Func<T, delegate???> action) {} //this is where I don't know what to define
Czy to możliwe? Czy istnieje inny sposób robienia tego bez użycia magicznych ciągów?
Co AddItem ma dodać? – pdr
Nie ma znaczenia, co robi AddItem, potrzebuję tylko nazwy metody bez użycia magicznych ciągów. – awilinsk
To ma znaczenie. Myślę, że gdzie zmierzasz jest Action, ale nie sądzę, że to najlepsza odpowiedź. –
pdr