मेरे पास एक बड़ी वस्तु है:
class BigObject{
public int Id {get;set;}
public string FieldA {get;set;}
// ...
public string FieldZ {get;set;}
}
और एक विशेष, डीटीओ जैसी वस्तु:
class SmallObject{
public int Id {get;set;}
public EnumType Type {get;set;}
public string FieldC {get;set;}
public string FieldN {get;set;}
}
मुझे व्यक्तिगत रूप से BigObject की स्मालऑबजेक्ट में स्पष्ट रूप से कास्टिंग की अवधारणा मिली - यह जानते हुए कि यह एक तरफ़ा, डेटा-खोने वाला ऑपरेशन है - बहुत सहज और पठनीय:
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
विधि के विचार के साथ संयुक्त ।