Büyük bir nesnem var:
class BigObject{
public int Id {get;set;}
public string FieldA {get;set;}
// ...
public string FieldZ {get;set;}
}
ve özel, DTO benzeri bir nesne:
class SmallObject{
public int Id {get;set;}
public EnumType Type {get;set;}
public string FieldC {get;set;}
public string FieldN {get;set;}
}
Kişisel olarak açıkça BigObject'i SmallObject'e dökerek bir kavram buluyorum - bunun tek yönlü, veri kaybeden bir işlem olduğunu bilerek - çok sezgisel ve okunabilir:
var small = (SmallObject) bigOne;
passSmallObjectToSomeone(small);
Açık operatör kullanılarak uygulanır:
public static explicit operator SmallObject(BigObject big){
return new SmallObject{
Id = big.Id,
FieldC = big.FieldC,
FieldN = big.FieldN,
EnumType = MyEnum.BigObjectSpecific
};
}
Şimdi, bir yaratabilecek SmallObjectFactoryile sınıf FromBigObject(BigObject big), aynı şeyi bağımlılık enjeksiyon eklemek ve gerektiğinde çağırır yöntemi ... ama bana daha da fazla karmaşık ve gereksiz görünüyor.
PS Bunun konuyla alakalı olup olmadığından emin değilim, ancak bunun OtherBigObjectda SmallObjectfarklı bir hale getirilerek dönüştürülebileceği de olacaktır EnumType.
.ToSmallObject()yöntem (veya GetSmallObject()). Anlık bir akıl yürütme sebebi
ToSmallObjectyöntem fikri ile birleştirildiğinde .