私は開発中のSDKにある内部依存関係を管理する方法を理解するのに少し問題があります。何らかの理由で、私が試したすべてのものがうまく動作しないようです。内部の依存関係の管理
が、私はこれらのクラスを持っていると言う:
class Table
{
Table(string name,IQueryProvider provider, IComObject comobject) {}
}
class TableFactory
{
Table BuildTable(name) <- builds a table object.
}
私がいる問題はBuildTable()メソッドはIQueryProviderとIComObjectを作成し、名前を下に通過しなければならないということです。 (私はそれを正しく理解していれば)私は私が望んでいるサービスロケータパターンを実装しているが、私はこのようなものを使用する場合:
BuildTable(string name)
{
IQueryProvider provider = ServiceLocator.GetInstance<IQueryProvider>();
IComObject comobject = ServiceLocator.GetInstance<IComObject>();
Table tab = new Table(name,provider,comobject);
return tab;
}
をそれは今私が私を作るのServiceLocatorにIQueryProviderとIComObjectの両方を持っている必要があることを意味します依存して見たりテストしたりすることは困難です。だから私は、このようなオブジェクトや工場、何かの種類を作成するために、依存関係の工場を作成しました:
class DependencyFactory
{
Table BuildTable(string name)
{
//call other BuildMethods to create objects.
//return new Table.
}
//Other Build methods for things like IQueryProvider, IComObject.
}
その後、私は私のサービスロケータでDependencyFactoryを登録してからちょうど方法を構築呼び出す必要があります。
このうちのいずれかが悪いですか?
私の最初のBuildTableメソッドは大丈夫ですか、それとも私はそれに心配していますか?
それはまだ本当に見ることができないという問題を解決しません内部の依存関係。しかし、もう一度、SDKの内部にあるので、私はどのタイプが必要かを知っています。何をすべきか。 –