在我的MVC 3项目中,我有方法,在dll和一些负载下扫描文件夹bin。然后我过滤并获得列表Controller类。然后我过滤并尝试获取返回ActionResult的方法列表。但我得到了重复方法。我尝试按属性过滤。但没有得到任何东西
private void GetControllers()
{
IEnumerable<FileInfo> files = this.GetFileList();
foreach (var fileInfo in files)
{
if (fileInfo.Name != "SGN.Framework.dll" && fileInfo.Name != "SGN.Controls.dll")
{
Assembly assembly = Assembly.LoadFile(fileInfo.FullName);
AssemblyName asamName = assembly.GetName();
IList<Type> myType =
assembly.GetTypes().Where(item => item.Name.Contains("Controller")).Where(
item => item.Name != "AdminsController" && item.Name != "ModuleController").ToList();
foreach (var type in myType)
{
var m =
type.GetMethods().Where(
item =>
item.ReturnType == typeof(ActionResult)).Except(type.GetCustomAttributes(true).Where(i => i != typeof(ActionInfoAttribute)));
}
}
}
}
答案 0 :(得分:1)
我知道这个问题已经过时了。但也许我的回答会帮助别人。 对于这种情况,以下代码将起作用:
type.GetMethods().Where(
item =>
item.ReturnType == typeof(ActionResult) && item.IsDefined(typeof(ActionInfoAttribute), false));