猿问

利用反射得到一个命名空间下的所有类,并调用?

怎么样利用反射,得到一个命名空间下的所有类,并且调用?

用 Assembly.GetExecutingAssembly().GetTypes() ,因为是一个外部的DLL

 

或者说,怎么样可以得到继承于某一个接口的类,并且调用他们?


RISEBY
浏览 539回答 2
2回答

当年话下

Assembly.LoadFrom("assemblyName").GetTypes();Assembly.Load("assemblyName").GetTypes();遍历, 再通过Type.GetInterface("```"),如果结果不为null,那就说明找到了再Activator.CreateInstance(“”)即可还是写段代码吧:   foreach(Type t in Assembly.Load("MyAssemblyName").GetTypes())       {           if(t.GetInterface("IYourInterface")!=null)           {           IYourInterface=(IYourInterface)Activator.CreateInstance(t);               ````           }       } foreach(Type t in Assembly.Load("MyAssemblyName").GetTypes())       {           if(t.GetInterface("IYourInterface")!=null)           {           IYourInterface=(IYourInterface)Activator.CreateInstance(t);               ````           }       } hoho就这样

慕尼黑的夜晚无繁华

(类型)Assembly.Load(路径).CreateInstance(类名);
随时随地看视频慕课网APP
我要回答