如何覆蓋MEF組合,以便如果導入構造函數要求單個依賴項,並且此需要的依賴項有多個實現,則需要具有最高優先級(元數據)的實現(導出)?覆蓋MEF組合
[Export(typeof(IService))]
[ExportMetadata("Priority", 1)]
public class Service1 : IService
{
}
[Export(typeof(IService))]
[ExportMetadata("Priority", 2)]
public class Service2 : IService
{
}
public interface IService
{
}
public class ServiceWithDependencies
{
[ImportingConstructor]
public ServiceWithDependencies(IService service)
{
}
}
ServiceWithDependencies通常不會滿足,因爲有IService的多於一個的實現。但我想修改MEF(覆蓋/攔截某些內容),以便它使用優先級元數據並將具有最高優先級的實現注入到ServiceWithDependencies構造函數中。
編輯1
我不想MEF支配我做事的方式。我希望它儘可能隱身。此外,這是一個框架,我不能控制人們如何需要依賴關係。我需要支持基本的構造函數注入。我知道[ImportMany],但這個問題恰恰是關於構造函數注入的。
對不起,如果我很慢,但我不明白這可以幫助構造函數注入。 – W3Max 2012-03-02 14:31:59
與構造函數注入沒有衝突,我們也使用它。 – 2012-03-02 15:15:09
我沒有說有問題,我只是說我不明白它是如何工作的。對不起,但我是MEF世界的新手。你能解釋一下上面的例子嗎? – W3Max 2012-03-02 15:57:46