0

在我的 MVC 3 项目中,我有一种方法,可以扫描 dll 中的文件夹 bin 和一些负载。然后我过滤并获取列表控制器类。然后我过滤并尝试列出返回 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)));
                }
            }
        }
}
4

1 回答 1

1

我知道这个问题很老了。但也许我的回答会对某人有所帮助。对于这种情况,以下代码将起作用:

type.GetMethods().Where(
    item =>
    item.ReturnType == typeof(ActionResult) && item.IsDefined(typeof(ActionInfoAttribute), false));
于 2013-09-30T14:58:30.633 回答