从托管代码,我如何在运行时从另一个程序集加载托管类型,假设调用代码没有对程序集的静态引用?
为了澄清,假设我将Lib.c中的类Lib编译成Lib.dll。我想在一个名为Foo.dll的单独程序集中编写一个类Foo,它没有静态引用Lib.dll,而是加载Lib.dll,然后反映出类Lib的存在然后调用方法在它上面。
对于关于反思这么明显的问题感到抱歉。我认为在阅读一些文章的论坛上获得答案所需的时间要少得多。
答案 0 :(得分:5)
这是一个简短的片段:
Assembly assembly = Assembly.LoadFile("Lib.dll");
ILib lib = (ILib)assembly.CreateInstance("Lib");
lib.doSomething();
当然,Lib类必须实现必须可以从Foo.dll和Lib.dll访问的ILib接口。这样就可以实现抽象。