Loading

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(); 
posted @ 2025-03-12 22:34  一起滚月球  阅读(9)  评论(0)    收藏  举报