Pat*_*ier 2 .net c# import mef lazy-loading
看看这个代码:
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;}
}
...
Run Code Online (Sandbox Code Playgroud)
我想在 Program 和 Main 之间的组合之后延迟加载 Object2。当我在 Program 中编写时,出现 MEF 错误,因为 MEF 也尝试编写 Object2(但 Interface2 的实现在开始时不可用......我想在之后加载它)。
我怎样才能做到这一点 ?
我试图把:
[import]
Lazy<Interace2> Object2 {get;set;}
Run Code Online (Sandbox Code Playgroud)
但我仍然有同样的麻烦。
用这个:
[Import(AllowDefault=true, AllowRecomposition=true)]
Lazy<Interface2> Object2 {get;set;}
Run Code Online (Sandbox Code Playgroud)
AllowDefault 将允许在没有 Interface2 时组合成功,而 AllowRecomposition 将允许您稍后添加它。是否使用 type 属性Lazy<Interface2>或仅Interface2在这种情况下使用都无关紧要。