Microsoft Unity和动态类型/程序集加载

本文关键字:程序集 加载 类型 动态 Unity Microsoft | 更新日期: 2023-09-27 18:21:48

我现在只是在玩Microsoft Unity 2,需要知道是否可以配置一个容器,以便它从文件系统加载程序集,而不必将其配置为从配置文件加载(其中包含到正确程序集的所有映射)或用程序注册类型对象。我需要这个来加载插件。所有插件都实现了相同的合约接口。我想实现的是,我可以在主应用程序文件夹中放置一个新的程序集(插件),它会被Unity自动发现。这可能吗?或者我需要使用MEF吗?

非常感谢任何帮助,非常感谢。

Microsoft Unity和动态类型/程序集加载

Unity不支持开箱即用的行为。但实施起来并不困难

每当您将新程序集放入插件文件夹时,FileSystemWatcher都可以通知您的应用程序。那么,这只是一个惯例问题,你如何处理这个新文件。使用Assembly.Load加载DLL。然后你可以扫描它以了解你的界面的实现

assembly.GetExportedTypes().Where(t => typeof(IMyInterface).IsAssignableFrom(t))

然后您需要向容器注册您的实现。

由于此服务是您基础设施的一部分,我认为可以在那里引用您的容器,否则我宁愿避免。