我已經開始使用MEF。在我的應用程序中,我有一些模型的工廠。 我的工廠有2種創建方法;一個名字作爲參數,另一個是類型。MEF和工廠直接導入創建對象
[Export(typeof(IFactory))]
[PartCreationPolicy(CreationPolicy.Shared)]
public class MyFactory : IFactory
{
public IModel Create(String name) {...}
public IModel Create(Type type) {...}
}
public class Foo
{
[Import(typeof(IFactory))]
public IFactory Factory { get; set; }
public Foo()
{
IModel modelByName = Factory.Create("name");
IModel modelByType = Factory.Create(typeof(Foo));
}
}
當時我已經導入一個工廠,然後調用工廠對象上創建 得到一個模型的時刻。 現在我不知道是否有直接導入模型的方式是這樣的:
[Import(typeof(IModel), Name:"Name")]
public IModel Model { get; set; }
編輯---------------------- -----------------------------
的目標將是取代是這樣的:
public class Foo
{
[Import(typeof(IFactory))]
public IFactory Factory { get; set; }
public IModel Model { get; set; }
public IModel Model1 { get; set; }
public Foo()
{
Model = Factory.Create("Foo");
Model1 = Factory.Create(typeof(Foo1));
}
}
惠特這樣的:
public class Foo
{
//Should internal import a IFactory(singeleton) object
//and call the Create(name:String) method on it
[Import(typeof(IModel), Name:"Foo")]
public IModel Model { get; set; }
//Should internal import a IFactory(singeleton) object
//and call the Create(type:Type) method on it
[Import(typeof(IModel), Type: typeof(Foo1))]
public IModel Model1 { get; set; }
}
謝謝你的回答。 ...我想我的問題不夠準確 我不想替換工廠,但我想直接導入Create方法的返回值,所以我不必每次都創建一個因子,只需調用Create就可以了。 – musium