2012-01-30 50 views
2

我只是在使用Microsoft Unity 2,需要知道是否可以配置容器,以便从文件系统加载程序集,而不必将其配置为从配置文件(其中包含所有映射到正确的程序集)加载或以编程方式注册类型对象。我需要这个基本上加载插件。所有插件都实现了相同的合约界面。我想要实现的是,我可以在主应用程序文件夹中放置一个新的程序集(插件),并由Unity自动发现。这是可能的,或者我需要使用MEF的呢?Microsoft Unity和动态类型/程序集加载

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

回答

3

Unity不支持那种开箱即用的行为。但实施它并不困难。

A FileSystemWatcher无论何时将新程序集放入插件文件夹,都可以通知您的应用程序。那么这只是约定的问题,你对这个新文件做了什么。使用Assembly.Load加载您的DLL。然后,你可以扫描它为你的接口

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

的实现,然后你需要与容器注册您的实现。

由于此服务是您的基础设施的一部分,我认为可以引用您的容器,我宁愿避免其他方式。

+0

谢谢塞巴斯蒂安 – Batiatto 2012-01-30 13:26:26