DTO POCO转换

时间:2012-03-26 15:27:13

标签: c# poco dto n-tier-architecture

我有几个DTO和相应的POCO。

在它们之间进行转换以及在何处找到转换函数的推荐方法是什么。

我最初的想法是在POCO中放置两个转换函数,并将它们称为ToPOCO和ToDTO。

但是有没有更好的想法或者可能创建扩展方法?

谢谢, 为了想法。

1 个答案:

答案 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; }
}