ฉันมีวัตถุขนาดใหญ่:
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)
วิธีการที่จะทำสิ่งเดียวกันเพิ่มไปยังการฉีดพึ่งพาและเรียกมันว่าเมื่อจำเป็น ... แต่สำหรับฉันดูเหมือนว่ายิ่งซับซ้อนและไม่จำเป็น
ป.ล. ฉันไม่แน่ใจว่าสิ่งนี้เกี่ยวข้องหรือไม่ แต่จะมีสิ่งใดบ้างOtherBigObject
ที่สามารถเปลี่ยนเป็นSmallObject
ตั้งค่าต่างEnumType
ๆ ได้
.ToSmallObject()
วิธีการ (หรือGetSmallObject()
) เมื่อเวลาผ่านไปด้วยเหตุผล - ฉันรู้ว่ามีบางอย่างผิดปกติกับความคิดของฉันดังนั้นฉันจึงถามพวกคุณ :)
ToSmallObject
วิธีการ