2010-06-24 209 views
2

這段代碼看看:延遲加載MEF?

public class Program 
{ 
[import]IMain Main {get; set;} 
... 
private Compose() {...} 
} 

internal interface IMain 
{ 
... 
} 

[Export(typeof(IMain)] 
public class Main : IMain 
{ 
    [import] 
    Interace1 Object1 {get;set;} 

    [import] 
    Interace2 Object2 {get;set;} 
} 
... 

我想延遲加載對象2 beween計劃和主要組成後。當我在程序中編寫時,我有一個MEF錯誤,因爲MEF也嘗試編寫Object2(但開始時Interface2的實現不可用...我想在它之後加載它)。

我該怎麼做?

我試圖把:

[import] 
    Lazy<Interace2> Object2 {get;set;} 

,但我仍然有同樣的煩惱。

回答

4

使用此:

[Import(AllowDefault=true, AllowRecomposition=true)] 
Lazy<Interface2> Object2 {get;set;} 

AllowDefault將使成分成功時,有沒有接口2,和AllowRecomposition將允許您以後添加。在這種情況下,使用類型爲Lazy<Interface2>的財產或僅使用Interface2無關緊要。