MVVMデザインのwpf appを開発します。 MVVMフレームワークとして、私はCaliburn Microを使用します。サービス私は外部のアセンブリで持っており、MEFを使ってビューモデルのクラスに注入されます。ビューモデルクラスで多くのクラスを注入
問題点私は多くの小規模なクラスを持っていますが、私はソリッドプリンシペを尊重しています。
[Export(typeof(IClassA)]
public class ClassA : IClassA
{}
[Export(typeof(IClassB)]
public class ClassB : IClassB
{}
[Export(typeof(IClassC)]
public class ClassC : IClassC
{}
//...
[Export(typeof(IClassK)]
public class ClassK : IClassK
{}
クラス数は約12-15です。
このクラスをビューモデルクラスで使用する必要があります。だから私はこれを使う:
public class MyViewModelClass
{
private interface IClassA _a;
private interface IClassB _b;
private interface IClassC _c;
//...
private interface IClassK _k;
[ImportingConstructor]
public MyViewModelClass(IClassA a, IClassB b, IClass c, ..., IClassK k)
{
_a=a; _b=b; _c=c; ... _k=k
}
}
私はこの方法が正しいとは思わない。あるいは、エレガントでシンプルなものが存在します。あなたの意見やアドバイスをいただきありがとうございます。
すべてのインポートが成功しない限り、OnImportsSatisfiedは呼び出されません。基本的に、そのメソッドに入るコードは、あなたのコンストラクタで通常オブジェクトを初期化するためにコンストラクタに置くコードです。インポートはコンストラクターで使用できないため、そのメソッドが呼び出されるまで使用することはできません。いずれかのインポートを満たすことができない場合は、通常のMEF例外がスローされ、エクスポートが不足していることが警告されます。 –
沖、説明ありがとう –