ฉันมีวัตถุขนาดใหญ่:
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วิธีการ