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
的属性并不重要