私はCOMオブジェクトの上にAPIを書いています。COMオブジェクトのほとんどすべての型と静的メソッドに渡す必要があります。私のAPI。IoCコンテナを使用するオーバーロードメソッドを持つ
私の質問は、COMオブジェクトを受け取り、代わりにIoCを解決したオーバーロードされたメソッドを代わりに持っているので、APIのユーザーは渡すことを心配する必要はありませんまたはCOMオブジェクト内のオーバーロードされたメソッドを削除して、それを渡すオプションを使用して解決する必要があります。
ここでは説明しにくいビットです。
コンストラクタの例;
FooType(IComObject obj,string table) {}
FooType(string table) : this(Ioc.Resolve<IComObject>(), table) {}
又は単に
FooType(string table) : this(Ioc.Resolve<IComObject>(), table) {}
静的メソッドの例;
public static SomeType Create(IComObject obj,string table)
{ // Do some work with obj}
public static SomeType Create(string table)
{
return MyClass.Create(Ioc.Resolve<IComObject>(),table);
}
やオーバーロードを持つだけ
public static SomeType Create(string table)
{
IComObject obj = Ioc.Resolve<IComObject>();
return MyClass.Create(Ioc.Resolve<IComObject>(),table);
}
私の最大の心配はそれだけで偏屈呼び出すメソッドの多くを作成するために起こっているということです。ここには他にどのような選択肢がありますか、それともこれが正しい方法ですか?
P.S実際に、IComObjectのインスタンスをすべてアプリケーションに渡す必要はありません。
これは次の質問の続きです:http://stackoverflow.com/questions/947378/ioc-vs-global-variable-in-library to me? – jerryjvl
ええ、それは一種のもので、この中の汚点と発見可能性についてもっと心配しています。 –
と私がやっていることをするのが正しければ。 –