有一天我发现,反射的对象,取其接口的时候,返回的是null。而我在使用实时窗口以及添加监视的方式去获取时,却发现是获取到正确的接口。百思不得其解。。。。
最后发现是:反射使用Assembly.LoadFrom()加载dll。
如果参数传相对路径,那么取的是当前 解决方案中的启动项目的生成路径下的dll。当时使用相对路径,实际就加载的是CodeBase = "file:///D:/XXX/WidgetDll/JHOutPatEntity.dll"
而最新dll生成的路径是“D:/XXXJHOutPatEntity.dll”
我 猜测,其他的方法中能传相对路径也可以传绝对路径的地方,都是这个原理。