4

我已经进行了大量的谷歌搜索,并且查看了 AutoMapper wiki,但我找不到 As<> 方法在 AutoMapper 中的作用的定义。

我有一些猜测。我玩过它一点。但我觉得我需要查看一些文档。

我认为该方法的名称对于有效的谷歌搜索来说太普通了。

如果有人知道此方法的文档在哪里(或知道它的来龙去脉),请发布。

4

2 回答 2

1

它是映射重定向。下面的测试证明了这一点:

[TestFixture]
public class DestinationTypePolymorphismTest
{
    public class Customer
    {
        public int Id { get; set; }
        public string Name { get; set; }
    }

    public class CustomerStubDTO
    {
        public int Id { get; set; }
    }

    public class CustomerDTO : CustomerStubDTO
    {
        public string Name { get; set; }
    }

    public class Order
    {
        public Customer Customer { get; set; }
    }

    public class OrderDTO
    {
        public CustomerStubDTO Customer { get; set; }
    }


    [Test]
    public void Mapper_Should_Allow_Overriding_Of_Destination_Type()
    {
        var order = new Order() { Customer = new Customer() { Id = 1, Name = "A" } };
        Mapper.CreateMap<Order, OrderDTO>();
        Mapper.CreateMap<Customer, CustomerDTO>();
        Mapper.CreateMap<Customer, CustomerStubDTO>().As<CustomerDTO>();
        var orderDto = Mapper.Map<Order, OrderDTO>(order);

        var customerDto = (CustomerDTO)orderDto.Customer;
        Assert.AreEqual("A", customerDto.Name);
        Assert.AreEqual(1, customerDto.Id);

    }

}
于 2012-10-25T20:55:29.463 回答
0

我仍然无法找到有关“As”方法的任何文档,但据我所知,这是一个映射重定向。

例如,这段代码:

Mapper.CreateMap<SomethingFromWebService, ISomething>().As<Something>();

意思是:对于这个 Mapping ( ISomething) 解决它As一个Something.

注意:这个问题可以为这个答案提供一些背景信息。

于 2012-10-25T19:38:43.143 回答