我碰到了牆壁。我添加了具有Service類的另一個程序集的引用。 因此,而不是創建一個新的實例我雖然這MEF將有助於(但不會)的。我做一些類似HelloScreens sample.The以下視圖模型的東西接受的屬性也保存模型。(職員)MEF caliburn micro
public class StaffFormViewModel : Screen
{
[Import]
public StaffService staffService { get; set; }
顯然,這不起作用,因爲班級不是由MEF構建的。但是,即使我想與MEF我應該創建多個實例來構建它,所以我應該選擇非共享。但人們說,它的緩慢。 Caliburn微示例添加了類似的東西,以創建新的實例。這需要每行5行代碼。
batch.AddExportedValue<Func<PreferencesCategoriesFormViewModel>>(
() => container.GetExportedValue<PreferencesCategoriesFormViewModel>());
的問題是,雖然如果我想以提供構造模型類我不能,因爲它是由MEF建立我可以用這個呢。我應該親自設置財產。 我只想要注入所需的服務。這不可能與mef?我應該公開靜態的容器,所以我可以參考它,並呼籲撰寫?請幫助:)
謝謝,但我想注入一個服務類,而不是由mef構造的類 – GorillaApe
同樣的原則適用,它只是你的視圖模型構造函數將會改變,或者你的工廠方法來獲取它需要的數據。例如。你可以使用Func或者創建一個接口類型和一個接受你的數據類型的方法。我鏈接到的視圖模型工廠也支持參數。 –
devdigital
3看起來不錯,因爲cm解決方案對我來說很難看。所以工廠似乎是2或3的解決方案。 – GorillaApe