代入演算子をオーバーロードしないでください。これは厄介で、コードを継承するすべての開発者を噛んでしまいます。明示的にする方が良いです。
別のクラスにこれら2つのタイプ(1:1でない場合はそれ以上)をマッピングするロジックをカプセル化します。 ToEntity
/FromEntity
メソッドを実装できるUserAdapter
クラスを作成します。
コード量を最小限に抑えるには、AutoMapperを使用してください。
AutoMapperは、オブジェクトのオブジェクトマッピング 戦略を定義するために、流暢構成 APIを使用します。 AutoMapperは、 の規則に基づいた一致アルゴリズムを使用して、 の送信元と宛先の値を一致させます。 現在、AutoMapperは、その設計 が 間のシリアライゼーション、 通信、メッセージング、または単に 腐敗防止層に適しているのDTO および他の単純なオブジェクトに複雑なオブジェクトモデルを平ら にモデル投影シナリオに向かっ 連動されていますドメインとアプリケーション層。
更新:
あなたはUser
クラスにこれらのメソッドを追加することができ、そしてそれは、小規模なプロジェクトのために十分かもしれません。私はデザインになるとちょっと純真だし、アダプタロジックをそれらのクラスの外に保つだろう。 User
クラスが従属し、UserEntity
クラスの知識があるのはなぜですか?一緒に縛るのはちょっと匂いがする。アダプターの別のレイヤーは、将来の証明になります。たとえば、データベースレイヤーを別のものに置き換える必要がある場合(つまり、Linq2SQLからEntityFrameworkまたはDapperに移動する必要がある場合)、新しいアダプターを作成するだけです。ビジネスクラスは元のままです。
なぜ、ToEntity/FromEntityをUserクラスに追加しないのですか? – JimK
+1 for AutoMapper。 –
@JimK - 答えを更新しました –