C# MEF的延迟加载?

C# MEF的延迟加载?,c#,.net,import,lazy-loading,mef,C#,.net,Import,Lazy Loading,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 Objec

请看下面的代码:

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;}
}
...
我想在程序和Main之间的组合之后延迟加载Object2。当我在程序中编写时,我有一个MEF错误,因为MEF也尝试编写Object2(但Interface2的实现在开始时不可用…我想在之后加载它)

我该怎么做

我试着说:

 [import]
  Lazy<Interace2> Object2 {get;set;}
[导入]
惰性对象2{get;set;}
但是我仍然有同样的问题。

使用这个:

[Import(AllowDefault=true, AllowRecomposition=true)]
Lazy<Interface2> Object2 {get;set;}
[导入(AllowDefault=true,AllowRecomposition=true)]
惰性对象2{get;set;}
AllowDefault将允许在没有接口2时合成成功,AllowRecomposition将允许您稍后添加它。在这种情况下,使用类型为
Lazy
或仅使用
Interface2
的属性并不重要