从外部程序集动态加载类型

时间:2010-03-28 18:52:34

标签: c# reflection

从托管代码,我如何在运行时从另一个程序集加载托管类型,假设调用代码没有对程序集的静态引用?

为了澄清,假设我将Lib.c中的类Lib编译成Lib.dll。我想在一个名为Foo.dll的单独程序集中编写一个类Foo,它没有静态引用Lib.dll,而是加载Lib.dll,然后反映出类Lib的存在然后调用方法在它上面。

对于关于反思这么明显的问题感到抱歉。我认为在阅读一些文章的论坛上获得答案所需的时间要少得多。

1 个答案:

答案 0 :(得分:5)

这是一个简短的片段:

Assembly assembly = Assembly.LoadFile("Lib.dll");
ILib lib = (ILib)assembly.CreateInstance("Lib");
lib.doSomething();

当然,Lib类必须实现必须可以从Foo.dll和Lib.dll访问的ILib接口。这样就可以实现抽象。