Saya memiliki objek besar:
class BigObject{
public int Id {get;set;}
public string FieldA {get;set;}
// ...
public string FieldZ {get;set;}
}
dan objek khusus, seperti DTO:
class SmallObject{
public int Id {get;set;}
public EnumType Type {get;set;}
public string FieldC {get;set;}
public string FieldN {get;set;}
}
Saya pribadi menemukan konsep yang secara eksplisit memasukkan BigObject ke dalam SmallObject - mengetahui bahwa itu adalah operasi satu arah, kehilangan data - sangat intuitif dan mudah dibaca:
var small = (SmallObject) bigOne;
passSmallObjectToSomeone(small);
Diimplementasikan menggunakan operator eksplisit:
public static explicit operator SmallObject(BigObject big){
return new SmallObject{
Id = big.Id,
FieldC = big.FieldC,
FieldN = big.FieldN,
EnumType = MyEnum.BigObjectSpecific
};
}
Sekarang, saya dapat membuat SmallObjectFactory
kelas dengan FromBigObject(BigObject big)
metode, yang akan melakukan hal yang sama, menambahkannya ke injeksi dependensi dan memanggilnya saat diperlukan ... tetapi bagi saya sepertinya lebih rumit dan tidak perlu.
PS Saya tidak yakin apakah ini relevan, tetapi akan ada OtherBigObject
yang juga akan dapat dikonversi menjadi SmallObject
, pengaturan berbeda EnumType
.
.ToSmallObject()
metode (atau GetSmallObject()
). Sebuah alasan sesaat - saya tahu ada sesuatu yang salah dengan pemikiran saya, jadi saya sudah bertanya kepada kalian :)
ToSmallObject
metode.