我目前在ASP.net网站上工作,我们在所有控制器上使用authorize属性。现在,主页将获得所有这些控制器的列表和一些属性,并将其作为卡显示给用户。我正在使用反射通过查找为每个控制器创建的接口来获取每个控制器。我目前正在尝试弄清如何仅基于authorize属性返回授权用户使用的控制器。有没有简单的方法可以做到这一点?
这是我当前获取控制器的代码:
static List<IControllerPlugin> controllerplugins = GetSubClasses<IControllerPlugin>()
.Select(type => (IControllerPlugin)Assembly.GetExecutingAssebly().CreateInstance((${type.Namespace}.{type.Name}))
.OrderBy(x => x.ControllerName).ToList();
private static List<Type> GetSubClasses<T>()
{
var type = typeof(T);
var types = Assembly.GetExecutingAssembly().GetTypes()
.Where(cntlrs.IsSubclassof(typeof(Controller)))
.Where(t => type.IsAssignableFrom(t)).ToList();
return types;
}