私のPOCOがDIに参加するシナリオはありますか?それはコードのにおいですか?永続オブジェクトと従属注入
答えて
コードの匂いは、何かが間違っているかもしれないが必ずしも間違っているとは限りません。私はこれがそのレベルに上昇することは知らない。
顧客POCOと短期間のCustomerValidatorオブジェクトが1人の顧客で操作されたとします。私は重要な依存関係としてxtorインジェクションを使用しています。そして、CustomerValidatorは確かにCustomerに重大な依存関係を取っています。それがなければ理にかなっていません。
私の見積もりでは、これはうまくいくシナリオです。私はそれがPOCOと比較してあなたのオブジェクトの生涯で多くをしなければならないと言うだけでなく、あなたのオブジェクトがPOCOにどれほど批判的に依存しているのでしょうか。
私がコードするとき、これは必ずしも一般的なケースではありません。私はそれを「匂い」と呼ぶことは知らない。おそらくそれがたくさん起こっているなら...とにかく私の2セント。
編集:例えば:
ここpublic class Customer
{
public virtual string LastName { get; set; }
public virtual string FirstName { get; set; }
public virtual string Ssn { get; set; }
}
public class CustomerValidator
{
private readonly Customer _customer;
public CustomerValidator(Customer customer)
{
_customer = customer;
}
public void FixIfNotValid()
{
if (!IsValid())
{
_customer.Ssn = "123456789";
_customer.LastName = "Smith";
}
}
public bool IsValid()
{
return !string.IsNullOrEmpty(_customer.Ssn) && !string.IsNullOrEmpty(_customer.LastName);
}
}
、あなたはPOCO(顧客)とPOCOとPOCOの関係ごとに1つずつ持っているバリデータオブジェクトを持っています。つまり、バリデーターはPOCOをその状態の一部としてカプセル化し、その上で(確かに意図的に)操作を実行します。
POCOがないと、バリデータオブジェクトは意味をなさないので、クライアントにPOCO(コンストラクタ依存性注入)を強制的に与えるような方法でコードを書くことになります。この例の人為的な性質を無視して、これをコードの匂いとは考えません。
依存関係があり、ここに注入しています。後で Customerの継承を定義した場合、バリデータは引き続き作業します。あなたはあなたのPOCOのテスト二倍で代用することによってバリデータをテストすることができます。したがって、DIのさまざまな動機は、サービス指向のクラスを注入する場合と同様に適用されます。だから、個人的に、私は注射しない理由はないと思う。
- 1. Springブート永続コンテキスト注釈
- 2. 永続オブジェクト - エンティティフレームワーク
- 3. 従属性注入の安全な列挙型
- 4. 角度2の従属注入またはコンストラクタ
- 5. モデルを従属フィールドで注文する
- 6. (サブ従属オブジェクトを含む)
- 7. CoreDataで同じタイプの永続オブジェクトと非永続オブジェクトを持つ
- 8. WHEREUSED非永続オブジェクトに対する属性の作成 - Maximo
- 9. Hibernateオブジェクトの永続属性をデタッチする方法
- 10. 永遠に似たC++オブジェクト永続ライブラリ
- 11. Json.NETとNHibernate - 永続オブジェクトの逆シリアル化
- 12. Silverlightオブジェクトの永続性
- 13. Windowsサービス - オブジェクトの永続性
- 14. NonUniqueObjectException永続オブジェクトの場合
- 15. オブジェクトの永続化を
- 16. 永続オブジェクトの編集
- 17. 教義2永続オブジェクト
- 18. サービススタック注入オブジェクト
- 19. EhCacheディスクの永続性 - 任意のオブジェクトを永続化する
- 20. Page.RegisterAsyncTaskと従属コード?
- 21. Ninject WCF:属性注入
- 22. オブジェクト注入のエラー
- 23. PHPと永続的接続
- 24. 従属としてのボレー
- 25. 春の注入とオブジェクトのインスタンス化
- 26. Dokkuと永続ストレージ
- 27. 永続オブジェクトの命名規則
- 28. 春JPA永続ネストされたオブジェクト
- 29. LazyObjectStoragesでオブジェクトを永続化する
- 30. WebApplication上のオブジェクトの.Net永続性
[IoCコンテナを使用してエンティティ/ビジネスオブジェクトの依存関係を解決してみませんか?](http://stackoverflow.com/questions/4835046/why-not-use-an-ioc-container-to- resolve-dependencies-for-entities-business-objec) – Steven