【问题标题】:Microsoft Unity and dynamic type/assembly loadMicrosoft Unity 和动态类型/程序集加载
【发布时间】:2012-01-30 13:01:42
【问题描述】:

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

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

【问题讨论】:

    标签: c# unity-container


    【解决方案1】:

    Unity 不支持这种开箱即用的行为。但是实现起来并不难。

    FileSystemWatcher 可以在您将新程序集放入插件文件夹时通知您的应用程序。那么这只是一个约定问题,你如何处理这个新文件。使用Assembly.Load 加载你的DLL。然后您可以扫描它以查找您的接口的实现

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

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

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

    【讨论】:

      猜你喜欢
      • 2021-01-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-28
      • 2021-03-26
      • 2016-10-24
      相关资源
      最近更新 更多