Dựa trên this article Tôi đang cố tạo một triển khai IActionFilter
cho ASP.NET Core có thể xử lý các thuộc tính được đánh dấu trên bộ điều khiển và hành động của bộ điều khiển. Mặc dù đọc các thuộc tính của bộ điều khiển là dễ dàng, tôi không thể tìm cách đọc các thuộc tính được định nghĩa trên phương thức hành động.Làm thế nào để đọc thuộc tính của phương thức hành động trong ASP.NET Core MVC?
Dưới đây là đoạn code tôi có ngay bây giờ:
public sealed class ActionFilterDispatcher : IActionFilter
{
private readonly Func<Type, IEnumerable> container;
public ActionFilterDispatcher(Func<Type, IEnumerable> container)
{
this.container = container;
}
public void OnActionExecuting(ActionExecutingContext context)
{
var attributes = context.Controller.GetType().GetCustomAttributes(true);
attributes = attributes.Append(/* how to read attributes from action method? */);
foreach (var attribute in attributes)
{
Type filterType = typeof(IActionFilter<>).MakeGenericType(attribute.GetType());
IEnumerable filters = this.container.Invoke(filterType);
foreach (dynamic actionFilter in filters)
{
actionFilter.OnActionExecuting((dynamic)attribute, context);
}
}
}
public void OnActionExecuted(ActionExecutedContext context)
{
throw new NotImplementedException();
}
}
Câu hỏi của tôi là: làm thế nào để tôi đọc thuộc tính phương pháp hành động trong ASP.NET MVC cốt lõi?
Bạn sẽ nhận được 'MemberInfo' cho bất kỳ phương pháp nào bạn quan tâm sử dụng API phản chiếu, sau đó sử dụng' GetCustomAttributes' trên đó. Hy vọng rằng tôi không hiểu sai câu hỏi –
@Asad: chỉ cho tôi. – Steven