我有一个大对象:
class BigObject{
public int Id {get;set;}
public string FieldA {get;set;}
// ...
public string FieldZ {get;set;}
}
还有一个专门的,类似于DTO的对象:
class SmallObject{
public int Id {get;set;}
public EnumType Type {get;set;}
public string FieldC {get;set;}
public string FieldN {get;set;}
}
我个人发现了将BigObject显式转换为SmallObject的概念-知道这是一种单向丢失数据的操作-非常直观且易读:
var small = (SmallObject) bigOne;
passSmallObjectToSomeone(small);
它使用显式运算符实现:
public static explicit operator SmallObject(BigObject big){
return new SmallObject{
Id = big.Id,
FieldC = big.FieldC,
FieldN = big.FieldN,
EnumType = MyEnum.BigObjectSpecific
};
}
现在,我可以SmallObjectFactory
使用FromBigObject(BigObject big)
方法创建一个类,该类将执行相同的操作,将其添加到依赖项注入中,并在需要时调用它……但是对我来说,这似乎更加复杂和不必要。
PS我不确定这是否相关,但是将可以OtherBigObject
将其转换为SmallObject
,并设置为different EnumType
。
.ToSmallObject()
方法(或GetSmallObject()
)。一时的失误-我知道我的想法有问题,所以我问过你们:)
ToSmallObject
方法思想结合使用时。