Ho un grande oggetto:
class BigObject{
public int Id {get;set;}
public string FieldA {get;set;}
// ...
public string FieldZ {get;set;}
}
e un oggetto specializzato, simile a DTO:
class SmallObject{
public int Id {get;set;}
public EnumType Type {get;set;}
public string FieldC {get;set;}
public string FieldN {get;set;}
}
Personalmente trovo un concetto di trasmissione esplicita di BigObject in SmallObject - sapendo che si tratta di un'operazione a senso unico, che perde dati - molto intuitiva e leggibile:
var small = (SmallObject) bigOne;
passSmallObjectToSomeone(small);
È implementato usando l'operatore esplicito:
public static explicit operator SmallObject(BigObject big){
return new SmallObject{
Id = big.Id,
FieldC = big.FieldC,
FieldN = big.FieldN,
EnumType = MyEnum.BigObjectSpecific
};
}
Ora, potrei creare una SmallObjectFactory
classe con FromBigObject(BigObject big)
metodo, che farebbe la stessa cosa, aggiungerla all'iniezione di dipendenza e chiamarla quando necessario ... ma a me sembra ancora più complicata e inutile.
PS Non sono sicuro che questo sia pertinente, ma ci OtherBigObject
sarà anche la possibilità di essere convertito in SmallObject
, impostazione diversa EnumType
.
.ToSmallObject()
metodo (o GetSmallObject()
). Un momento momentaneo di ragione - sapevo che qualcosa non andava nel mio pensiero, quindi vi ho chiesto ragazzi :)
ToSmallObject
metodo.