Csharp/C#教程:在运行时加载程序集分享


在运行时加载程序集

我的项目是一个应用程序,我们在其中加载各种程序集并对它们执行操作。

我们陷入了这样一种情况:我们需要添加对我们加载的程序集的引用(将由用户选择)。 所以我需要在运行时添加对DLL的引用。

我试过这个网站,但在这里他们只支持像System.Security等微软DLL。我想添加对用户创建的dll(类库)的引用。

您不能在运行时“添加引用” – 但您可以加载程序集 – Assembly.LoadFrom / Assembly.LoadFile等。问题是除非使用AppDomain否则无法卸载它们。 拥有Assembly ,可以使用assemblyInstance.GetType(fullyQualifiedTypeName)通过reflection创建实例(然后可以将其转换为已知接口等)。

对于一个简单的例子:

 // 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转换为已知的基类型/接口,或者继续使用reflection来操作它。

如果程序集位于当前位置或GAC中的其他位置,请使用AppDomain.CurrentDomain.AssemblyResolve事件自行传递程序集。

如果在运行时加载程序集,它将在当前位置或GAC中查找其所有依赖项,并在找到时加载它们,否则出错。

Composite UI Application Block在三个方面促进了客户端应用程序的设计和实现:

对于WPF:看看Prism:模式和实践WPF和Silverlight站点的复合应用程序指南它执行您需要的程序集加载,并在内部实际使用Unity,因为它是IoC容器。

对于非WPF:看看智能客户端 – 复合UI应用程序块

或者:尝试任何IoC容器,如Castle Windsor ,autofac,unity等。

上述就是C#学习教程:在运行时加载程序集分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/cdevelopment/1023068.html

(0)
上一篇 2022年1月7日
下一篇 2022年1月7日

精彩推荐