对象映射器
1、获得实例
要使用对象映射器,首先得获取到它的实例。我们不推荐使用 new 构造一个实例,而是使用 ObjectMapperFactory 工厂类来创建一个实例。该工厂类提供一个 CreateMapper 方法,可以接收一个 configName 参数,这个参数对应对象映射器配置(可参考 配置与扩展)中配置项的名称,如果未配置对象映射器配置项,则返回默认的对象映射器单例。如下所示:
[TestMethod]
public void TestCreateMapper()
{
var mapper = ObjectMapperFactory.CreateMapper();
Assert.IsNotNull(mapper); // DefaultObjectMapper
}
在使用 IOC
的环境中,也可以通过构造注入或属性注入得到 IObjectMapper
的实例。如下所示:
public class HomeController : Controller
{
private readonly IObjectMapper _objectMapper;
public HomeController(IObjectMapper objectMapper)
{
_objectMapper = objectMapper;
}
}
2、使用方法
IObjectMapper
接口定义了将源对象转换为一个目标对象的 Map 方法。如下所示:
public class PersonModel
{
public string Name { get; set; }
public int Sex { get; set; }
}
public class PersonDto
{
public string Name { get; set; }
public int Sex { get; set; }
}
[TestMethod]
public void TestMap()
{
var model = new PersonModel { Name = "fireasy" };
var mapper = ObjectMapperFactory.CreateMapper();
var dto = mapper.Map<PersonModel, PersonDto>(model);
Assert.AreEqual(dto.Name, model.Name);
}
Map 方法的另一个重载是将源对象映射到已有的目标对象。如下所示:
[TestMethod]
public void TestMapTo()
{
var model = new PersonModel { Name = "fireasy" };
var dto = new PersonDto();
var mapper = ObjectMapperFactory.CreateMapper();
mapper.Map(model, dto);
Assert.AreEqual(dto.Name, model.Name);
}