C# 如何在Assembly.GetExecutionGassembly中获取HttpPostAttribute

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

我不想在动态角色的代码中只获取Post方法,但这段代码返回get和Post方法

如何在此代码中仅获取Post方法

  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服务。想进一步描述一下你想做什么吗?