У мене великий об’єкт:
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
метод.