我是 System.Action<T> 和 Lambda 表达式的新手。这是我想使用的一种情况。
using System;
using System.ComponentModel.Composition;
public class MyClass {
public static CompositionContainer Container = new CompositionContainer();
private void Initialize(Action<CompositonBatch> action) {}
public MyClass() {
CompositionBatch batch = null;
inititialize(x=> {
// create catalog instances: instance1 and instance2 as example
// ...
x.AddPart(instance1);
x.AddPart(instance2);
batch = x;
});
// at this point, will be batch be none-null value will parts added?
// the following code is composing batch to the container
Container.Compose(batch);
}
}
基本上,方法 Initialize(Action<CompositionBatch> action) 用于将 MEF 目录部件初始化为 CompositionBatch 实例,该实例添加所有导入和导出部件。之后,将批处理组合到容器中以解析所有 DI 映射。
我不确定我是否在这里正确使用了 System.Action<T> 和 Lambda 表达式。在这个例子中,x 会由 Composition() CTOR 即时创建吗?我应该在 Initialize() 方法中添加任何内容吗?或者我应该创建一个委托作为 Initialize() 代替(如果是这样我认为我仍然需要将它绑定到一个方法)?