2012-01-30 33 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