我是新來的System.Action <T>和Lambda表達式。這是我想要使用的一種情況。對於MEF情況,Lambda表達式示例與System.Action <T>?
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(動作<CompositionBatch>動作)被用來初始化MEF目錄份到CompositionBatch實例,這增加了所有的進口和出口部分。之後,該批次將被組合到容器中以解析所有DI映射。
我不知道是否在此處正確使用System.Action <T>和Lambda表達式。這個例子中x會由Composition()CTOR在運行中創建嗎?我應該在方法Initialize()中放置什麼?或者,我應該創建一個委託爲Initialize(),而不是(如果是這樣我認爲我仍然需要綁定到一個方法)?
我編輯了我的密碼。我不確定你的意思是「關閉批處理變量」。我的理解是,在Initialize()的調用之後批處理不爲null,並且其中包含部分內容。你的意思是我需要將批次定義爲類級別var嗎? – 2010-01-22 18:20:57
我得到錯誤的行動();在Initialize()方法中。它應該像「動作(新構圖())」;「代替? – 2010-01-22 18:25:05
是的,應該這樣做。我會編輯我的答案。 – 2010-01-22 20:07:41