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

Wat*_* v2 5 c# reflection

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

为了澄清起见,假设我将Lib.cs中的类Lib编译为Lib.dll。我想在一个名为Foo.dll的单独程序集中编写一个Foo类,该类没有静态引用Lib.dll,而是加载Lib.dll,然后考虑是否存在类Lib,然后调用一个方法在上面。

很抱歉对反射提出如此明显的问题。我认为,在需要阅读几篇文章的论坛上获得答案所需的时间要少得多。

Pet*_*hev 5

这是一个简短的片段:

Assembly assembly = Assembly.LoadFile("Lib.dll");
ILib lib = (ILib)assembly.CreateInstance("Lib");
lib.doSomething();
Run Code Online (Sandbox Code Playgroud)

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