C# DTO-POCO转换
我有几个DTO和相应的POCO 建议在它们之间进行转换的方式是什么,以及转换函数的位置 我最初的想法是将两个转换函数放在POCO中,并将它们称为ToPOCO和ToDTO 但是,有没有更好的方法,或者创建一个扩展方法 谢谢,C# DTO-POCO转换,c#,poco,dto,n-tier-architecture,C#,Poco,Dto,N Tier Architecture,我有几个DTO和相应的POCO 建议在它们之间进行转换的方式是什么,以及转换函数的位置 我最初的想法是将两个转换函数放在POCO中,并将它们称为ToPOCO和ToDTO 但是,有没有更好的方法,或者创建一个扩展方法 谢谢, 了解想法。查看为您提供此功能的库: 自动映射器: 我个人最喜欢使用隐式转换操作。我必须补充一点,我只在将来重构后打算移除“粘合”层时才使用它。在生产环境中,这可能不是一个长期的解决方案(因为它的含蓄性使它很容易被忽略) 查看为您提供此功能的库: 自动映射器: 我个人最
了解想法。查看为您提供此功能的库:
- 自动映射器:
查看为您提供此功能的库:
- 自动映射器:
有趣的是,你忘了提到语言/平台。从你处理事情的方式来看,我猜是Java,但看到命名,我猜是C#如果我错了,请纠正我,但DTO和POCO不是几乎同义吗?@doogle我的理解是DTO不具备功能。他们只是他们所说的;数据传输对象。它们是可序列化的,因此可以通过SOAP服务进行传输。POCO是标准的域实体,包括构造函数和更具体的行为。这些对象不会序列化,因此在此上下文中对“传输”毫无用处。有趣的是,您忽略了提及语言/平台。从你处理事情的方式来看,我猜是Java,但看到命名,我猜是C#如果我错了,请纠正我,但DTO和POCO不是几乎同义吗?@doogle我的理解是DTO不具备功能。他们只是他们所说的;数据传输对象。它们是可序列化的,因此可以通过SOAP服务进行传输。POCO是标准的域实体,包括构造函数和更具体的行为。这些对象不会序列化,因此在此上下文中对“传输”毫无用处。
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; }
}