Ich habe ein großes Objekt:
class BigObject{
public int Id {get;set;}
public string FieldA {get;set;}
// ...
public string FieldZ {get;set;}
}
und ein spezialisiertes, DTO-ähnliches Objekt:
class SmallObject{
public int Id {get;set;}
public EnumType Type {get;set;}
public string FieldC {get;set;}
public string FieldN {get;set;}
}
Ich persönlich finde ein Konzept zum expliziten Umwandeln von BigObject in SmallObject - in dem Wissen, dass es sich um eine Einwegoperation handelt, bei der Daten verloren gehen - sehr intuitiv und lesbar:
var small = (SmallObject) bigOne;
passSmallObjectToSomeone(small);
Es wird mit dem expliziten Operator implementiert:
public static explicit operator SmallObject(BigObject big){
return new SmallObject{
Id = big.Id,
FieldC = big.FieldC,
FieldN = big.FieldN,
EnumType = MyEnum.BigObjectSpecific
};
}
Jetzt könnte ich eine SmallObjectFactory
Klasse mit einer FromBigObject(BigObject big)
Methode erstellen , die dasselbe macht, sie zur Abhängigkeitsinjektion hinzufügt und sie bei Bedarf aufruft ... aber für mich scheint es noch komplizierter und unnötiger zu sein.
PS: Ich bin mir nicht sicher, ob dies relevant ist, aber es wird möglich sein OtherBigObject
, das auch in eine SmallObject
andere Einstellung umzuwandeln EnumType
.
.ToSmallObject()
Methode (oder GetSmallObject()
). Ein kurzer Moment der Vernunft - Ich wusste, dass etwas mit meinem Denken nicht stimmt, also habe ich euch gefragt :)
ToSmallObject
Methode.