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 に答える