我有几个DTO和相应的POCO。
在它们之间进行转换以及在何处找到转换函数的推荐方法是什么。
我最初的想法是在POCO中放置两个转换函数,并将它们称为ToPOCO和ToDTO。
但是有没有更好的想法或者可能创建扩展方法?
谢谢, 为了想法。
答案 0 :(得分:6)
查看为您执行此操作的库:
我个人轻量级的最爱是使用隐式转换操作。我必须补充一点,我只在我打算在未来的重构后删除'glue'层时使用它。这可能不适合作为生产环境中的长期解决方案(因为隐含性很容易错过)。
public class MyPoco
{
public static implicit operator MyPoco(MyDTO o)
{
if (o == null) return null;
return new MyPoco {
SomeAmount = Convert.ToDecimal(o.SomeAmount),
SomeBool = Equals("Y", o.SomeBool ),
Sub1 = o.Sub1,
Sub2 = o.Sub2,
};
}
public static implicit operator MyDTO(MyPoco o)
{
if (o == null) return null;
return new MyDTO {
SomeAmount = o.SomeAmount.ToString(),
SomeBool = o.SomeBool ? "Y":"N",
Sub1 = o.Sub1,
Sub2 = o.Sub2,
};
}
public decimal SomeAmount { get; set; }
public bool SomeBool { get; set; }
public MySubPoco1 Sub1 { get; set; }
public MySubPoco2 Sub2 { get; set; }
}