我正在(或者,很快,将会)使用 AutoMapper 将一堆业务对象映射到一堆 WCF DTO。这似乎是一个不错的技巧——在这个级别上需要进行大量的故障排除.CreateMap
,但总的来说感觉值得。直到我决定将我的业务逻辑隐藏在程序集之外。
BO 和 mapper 生活在同一个项目中;他们剥离了外部组件 DTO,它们是public
(并且无论如何都需要通过渠道)。没有必要公开 BO,因为 DTO 现在可以完成这项工作,所以我想我应该将它们的访问器重置为internal
. Kaboom 进行自动映射。为了显示:
(来自 BLL 的代码,与 AutoMapping 相同)
public class TestObject
{
private int _myID;
public int MyID
{
get { return _myID; }
set { _myID = value; }
}
}
(来自服务层的代码)
public class TestObjectDTO
{
private int _myID;
public int MyID
{
get { return _myID; }
set { _myID = value; }
}
}
这会起作用
Mapper.CreateMap<TestObject, TestObjectDTO>();
直到我这样做:
internal class TestObject
...
甚至只是这个,在TestObject
:
internal int MyID
谁能给我解释一下?我不会称它为“错误”,但它似乎与基于反射的映射的整个目的相矛盾,即允许不同目的的对象流畅地缩放在一起。为什么 AM 不能处理映射,让我控制访问器?