c#问题:反射
1. 使用
找到所有继承 InterfaceC 接口的类
Assembly asm = Assembly.LoadFrom(dllPath);
//区别在于 LoadFrom 会将 dll文件相关依赖也加载进来?
//Assembly asm = Assembly.LoadFile(dllPath);
// 如果有相同的a,b 两个dll文件,那么 InterfaceC 所在的Dll文件不能和
// 加载的接口和类必须在a,b两个文件里面。通过动态获取b文件的程序集(b文件引用同目录的c文件,c文件和a文件相同),与已添加引用的a文件获取的进行判断。
var types = asm.GetTypes().Where(t =>
typeof(InterfaceC).IsAssignableFrom(t)).ToArray(); //更快
).ToArray();
var types = asm.GetTypes().Where(t =>
t.GetInterfaces().Contains(typeof(InterfaceC))
).ToArray();

浙公网安备 33010602011771号