私には大きなオブジェクトがあります:
class BigObject{
public int Id {get;set;}
public string FieldA {get;set;}
// ...
public string FieldZ {get;set;}
}
そして、特殊なDTOのようなオブジェクト:
class SmallObject{
public int Id {get;set;}
public EnumType Type {get;set;}
public string FieldC {get;set;}
public string FieldN {get;set;}
}
個人的には、BigObjectをSmallObjectに明示的にキャストするという概念を見つけます-それは一方向のデータ損失操作であることを知っている-非常に直感的で読みやすいです:
var small = (SmallObject) bigOne;
passSmallObjectToSomeone(small);
明示的な演算子を使用して実装されます:
public static explicit operator SmallObject(BigObject big){
return new SmallObject{
Id = big.Id,
FieldC = big.FieldC,
FieldN = big.FieldN,
EnumType = MyEnum.BigObjectSpecific
};
}
今、私はメソッドを使用してSmallObjectFactory
クラスを作成することができます。これFromBigObject(BigObject big)
は同じことを行い、依存関係の注入に追加し、必要なときに呼び出します...しかし、私にとってはさらに複雑で不要なようです。
PSこれが関連するかどうかはわかりませんが、異なる設定にOtherBigObject
変換することもできるでしょう。SmallObject
EnumType
.ToSmallObject()
方法(メソッドGetSmallObject()
)についてどうも考えなかったため。瞬間的な理由の失効-私は自分の思考に何か問題があることを知っていたので、皆さんに尋ねました:)
ToSmallObject
メソッドのアイデアと組み合わせると。