通过反射访问 属性 apicontroller

Access to property apicontroller with reflection

我有一个 api-rest 有许多具有属性的控制器:[ApiController],我需要通过反射访问控制器并查看此控制器是否具有此属性。我怎么能那样做?谢谢

这应该让您当前执行的程序集中的所有非抽象控制器继承自 ControllerBase 并实现 ApiControllerAttribute。如果您想移动某些条件或针对不同的程序集,请随意这样做。

IEnumerable<Type> controllerTypes = Assembly
    .GetExecutingAssembly()
    .GetTypes()
    .Where(type => type.IsClass
        && !type.IsAbstract
        && type.IsSubclassOf(typeof(ControllerBase))
        && type.GetCustomAttribute<ApiControllerAttribute>() != null);

您可以使用以下代码检查特定控制器是否具有 ApiController 属性:

var flag = typeof(ValuesController).GetTypeInfo()
                                    .GetCustomAttribute(typeof(ApiControllerAttribute));
if(flag!=null)
{
     //ValuesController have the ApiController attribute
     //do your stuff...
}