Microsoft Unity和动态类型/程序集加载
本文关键字:程序集 加载 类型 动态 Unity Microsoft | 更新日期: 2023-09-27 18:21:48
我现在只是在玩Microsoft Unity 2,需要知道是否可以配置一个容器,以便它从文件系统加载程序集,而不必将其配置为从配置文件加载(其中包含到正确程序集的所有映射)或用程序注册类型对象。我需要这个来加载插件。所有插件都实现了相同的合约接口。我想实现的是,我可以在主应用程序文件夹中放置一个新的程序集(插件),它会被Unity自动发现。这可能吗?或者我需要使用MEF吗?
非常感谢任何帮助,非常感谢。
Unity不支持开箱即用的行为。但实施起来并不困难
每当您将新程序集放入插件文件夹时,FileSystemWatcher都可以通知您的应用程序。那么,这只是一个惯例问题,你如何处理这个新文件。使用Assembly.Load加载DLL。然后你可以扫描它以了解你的界面的实现
assembly.GetExportedTypes().Where(t => typeof(IMyInterface).IsAssignableFrom(t))
然后您需要向容器注册您的实现。
由于此服务是您基础设施的一部分,我认为可以在那里引用您的容器,否则我宁愿避免。