J'ai un gros objet:
class BigObject{
public int Id {get;set;}
public string FieldA {get;set;}
// ...
public string FieldZ {get;set;}
}
et un objet spécialisé de type DTO:
class SmallObject{
public int Id {get;set;}
public EnumType Type {get;set;}
public string FieldC {get;set;}
public string FieldN {get;set;}
}
Personnellement, je trouve très intuitif et lisible un concept de conversion explicite de BigObject en SmallObject - sachant qu'il s'agit d'une opération unidirectionnelle avec perte de données.
var small = (SmallObject) bigOne;
passSmallObjectToSomeone(small);
Il est implémenté à l'aide d'un opérateur explicite:
public static explicit operator SmallObject(BigObject big){
return new SmallObject{
Id = big.Id,
FieldC = big.FieldC,
FieldN = big.FieldN,
EnumType = MyEnum.BigObjectSpecific
};
}
Maintenant, je pourrais créer une SmallObjectFactory
classe avec FromBigObject(BigObject big)
méthode, qui ferait la même chose, l'ajouter à l'injection de dépendances et l'appeler en cas de besoin ... mais pour moi, cela semble encore plus compliqué et inutile.
PS Je ne sais pas si cela est pertinent, mais il y en aura OtherBigObject
qui pourront également être convertis en SmallObject
paramètres différents EnumType
.
.ToSmallObject()
méthode (ou GetSmallObject()
). Un laps de temps momentané - je savais que quelque chose n'allait pas dans ma façon de penser, alors je vous ai demandé les gars :)
ToSmallObject
méthode.