Mam duży przedmiot:
class BigObject{
public int Id {get;set;}
public string FieldA {get;set;}
// ...
public string FieldZ {get;set;}
}
oraz specjalistyczny obiekt podobny do DTO:
class SmallObject{
public int Id {get;set;}
public EnumType Type {get;set;}
public string FieldC {get;set;}
public string FieldN {get;set;}
}
Osobiście uważam koncepcję jawnego przeniesienia BigObject do SmallObject - wiedząc, że jest to operacja jednokierunkowa, polegająca na utracie danych - bardzo intuicyjna i czytelna:
var small = (SmallObject) bigOne;
passSmallObjectToSomeone(small);
Jest realizowany za pomocą jawnego operatora:
public static explicit operator SmallObject(BigObject big){
return new SmallObject{
Id = big.Id,
FieldC = big.FieldC,
FieldN = big.FieldN,
EnumType = MyEnum.BigObjectSpecific
};
}
Teraz mógłbym stworzyć SmallObjectFactory
klasę z FromBigObject(BigObject big)
metodą, która zrobiłaby to samo, dodać ją do wstrzykiwania zależności i wywołać w razie potrzeby ... ale dla mnie wydaje się to jeszcze bardziej skomplikowane i niepotrzebne.
PS Nie jestem pewien, czy to jest istotne, ale będzie też to, OtherBigObject
co będzie można przekonwertować SmallObject
, ustawiając inaczej EnumType
.
.ToSmallObject()
metoda (lub GetSmallObject()
). Chwilowy brak rozumu - wiedziałem, że coś jest nie tak z moim myśleniem, więc poprosiłem was :)
ToSmallObject
.