我的项目是一个应用程序,我们在其中加载各种程序集并对它们执行操作。
我们陷入了这样一种情况,我们需要添加对我们加载的程序集的引用(将由用户选择)。所以我需要在运行时添加对DLL的引用。
I tried 这个网站 http://www.codeproject.com/KB/cs/addrefvsnet.aspx但在这里它们仅支持 Microsoft DLL,如 System.Security 等。我想添加对用户创建的 dll(类库)的引用。
您无法在运行时“添加引用” - 但您可以加载程序集 -Assembly.LoadFrom
/ Assembly.LoadFile
等等。问题是你不能unload除非你使用它们AppDomain
s。一旦你有一个Assembly
, 您可以使用assemblyInstance.GetType(fullyQualifiedTypeName)
通过反射创建实例(然后您可以将其转换为已知接口等)。
举一个简单的例子:
// just a random dll I have locally...
Assembly asm = Assembly.LoadFile(@"d:\protobuf-net.dll");
Type type = asm.GetType("ProtoBuf.ProtoContractAttribute");
object instance = Activator.CreateInstance(type);
此时我可以选择instance
到已知的基本类型/接口,或者继续使用反射来操作它。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)