申し訳ありませんが、これは本当に基本的な質問ですが、それは本当に私に得ています。私はDIのアイデアが本当に好きです。私のテストでは本当に助けになりますが、私は考えているレンガの壁にちょっと打ちました。だから私は、2つのタイプがあります。DIオブジェクトのグラフ構築 - ロジックと構築グラフの分離
Table
TableManager
は今、テーブルのオブジェクトは、このようなことにコンストラクタを持っています
Table(ITableCommandRunner tableRunner,
IQueryProvider queryProvider,
IDataReader reader,
string Name)
今テーブルオブジェクトはかなりだけなので、あなたが求めるルールを以下のこれらのオブジェクトを使用しています必要なものを渡します。今は、TableManagerオブジェクトを使用して、etcテーブルを開いたり閉じたりします。必要なのはITableCommandRunnerだけなので、コンストラクタで渡します。
TableManager(ITableCommandRunner tablrunner)
[OK]を、それは大丈夫ですが、TableManager.OpenTableコマンドで私がITableCommandRunner上で開いているテーブルのcommmandを呼び出した後、戻って渡すために新しいテーブルオブジェクトを作成する必要があります。
public ITable OpenTable(string tableName)
{
// Call open table command on tablerunner.
// I need a IQueryProvider and IDataReader to pass to the table.
return new Table<TEntity>(this.tablerunner, provider,reader, tableName);
}
しかし、私は今開いているテーブルコマンドでIDataReaderとIQueryProviderを作成する必要があります。私がそれらをTableManagerのコンストラクタに渡すと、「オブジェクトを内部の型に渡し、実際には使用しない」というオブジェクトに違反しません。
私はこれをどうやって行うのか分かりません。誰も私にこれを手伝ってもらえますか?
私はオブジェクトの構成とロジックをどのように分離するのか分かりません。
私はちょうどマネージャーでIQueryProviderとIDataReaderを取らなければならないかもしれないと思う。テーブルマネージャは、ちょうど異なる名前のファクトリです。私はMiškoHeveryとDIに関するgoogleの技術話を見て、彼の言うことに同意しますが、私がいる状況の実例を見つけることはできません。それらを下にして "しかし、例がなければ何も意味しない。そして、私はSDKで作業しているので、すべての部分が独立している必要があります。 –
私のちょっとした暴言については申し訳ありません。ありがとう、少なくとも私はこの問題の唯一の人ではないことを知っています。 –