从托管代码中,假设调用代码没有对该程序集的静态引用,那么如何在运行时从另一个程序集中加载托管类型?
为了澄清起见,假设我将Lib.cs中的类Lib编译为Lib.dll。我想在一个名为Foo.dll的单独程序集中编写一个Foo类,该类没有静态引用Lib.dll,而是加载Lib.dll,然后考虑是否存在类Lib,然后调用一个方法在上面。
很抱歉对反射提出如此明显的问题。我认为,在需要阅读几篇文章的论坛上获得答案所需的时间要少得多。
这是一个简短的片段:
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进行访问。这样您就可以实现抽象。
| 归档时间: |
|
| 查看次数: |
2760 次 |
| 最近记录: |