C# 如何在Assembly.GetExecutionGassembly中获取HttpPostAttribute
我不想在动态角色的代码中只获取Post方法,但这段代码返回get和Post方法 如何在此代码中仅获取Post方法C# 如何在Assembly.GetExecutionGassembly中获取HttpPostAttribute,c#,asp.net-core,lambda,C#,Asp.net Core,Lambda,我不想在动态角色的代码中只获取Post方法,但这段代码返回get和Post方法 如何在此代码中仅获取Post方法 Assembly asm = Assembly.GetExecutingAssembly(); var contradistinction = asm.GetTypes() .Where(type => typeof(Controller).IsAssignableFrom(type)) .SelectMan
Assembly asm = Assembly.GetExecutingAssembly();
var contradistinction = asm.GetTypes()
.Where(type => typeof(Controller).IsAssignableFrom(type))
.SelectMany(type =>
type.GetMethods(BindingFlags.Instance | BindingFlags.DeclaredOnly | BindingFlags.Public))
.Select(x => new
{
Controller = x.DeclaringType?.Name,
Action = x.Name,
Area = x.DeclaringType?.CustomAttributes.Where(c => c.AttributeType == typeof(AreaAttribute))
});
var oo = contradistinction.ToList().Distinct();
您已经知道如何获取自定义属性,因此请使用仅具有HttpPostAttribute的方法进行筛选。但这只能找到正确属性化的方法,而不是那些基于约定或通过端点路由显式配置的方法。您能给我举个例子吗?我不鼓励您使用该方法。如果您想要实现动态角色(例如授权/路由),我建议使用自定义操作过滤器。您将有权访问
ActionContext
,这使您能够更好地访问操作方法、控制器等,同时还可以访问所有DI服务。想进一步描述一下您正在尝试做什么吗?您已经知道如何获取自定义属性,所以请使用仅具有HttpPostAttribute的方法进行筛选。但这只能找到正确属性化的方法,而不是那些基于约定或通过端点路由显式配置的方法。您能给我举个例子吗?我不鼓励您使用该方法。如果您想要实现动态角色(例如授权/路由),我建议使用自定义操作过滤器。您将有权访问ActionContext
,这使您能够更好地访问操作方法、控制器等,同时还可以访问所有DI服务。想进一步描述一下你想做什么吗?