私はMEFを使い始めました。私のアプリケーションでは、いくつかのモデルのファクトリがあります。私の工場には2つの作成方法があります。1 つはパラメーターとして名前を取り、もう 1 つは型を取ります。
[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));
}
}
現時点では、ファクトリをインポートしてから、ファクトリ オブジェクトで create を呼び出してモデルを取得する必要があります。今、次のようなモデルを直接インポートする方法があるかどうか疑問に思っています:
[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; }
}