Exemplo n.º 1
0
        // public IModuleRuntime ModuleRuntime { get; set; }

        public void AddProvider(IModuleProvider provider)
        {
            System.RuntimeTypeHandle providerHandle = provider.GetType().TypeHandle;
            dictModuleProviders.Add(provider.PrividerName, providerHandle);
            //反射出所有结果为 IActionResult类型的方法

            List <MethodHandleInfo> actionMethods = new List <MethodHandleInfo>();

            foreach (MethodInfo method in provider.GetType().GetMethods(BindingFlags.Instance | BindingFlags.Public))
            {
                if (method.ReturnType.GetInterfaces().Contains(typeof(IActionResult)))
                {
                    MethodHandleInfo info = new MethodHandleInfo();
                    info.MethodHandle = method.MethodHandle;
                    info.MethodName   = method.Name;
                    actionMethods.Add(info);
                }
            }

            dictProviderMethods.Add(providerHandle, actionMethods.ToArray());
        }