有关As<>()方法在AutoMapper中执行的操作的详细信息

时间:2012-10-25 19:23:55

标签: c# .net automapper

我已经做了相当多的谷歌搜索,我查看了AutoMapper维基,但我找不到As<>的定义方法在AutoMapper中。

我有一些猜测。我玩了一下。但我觉得我需要看一些文档。

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

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

2 个答案:

答案 0 :(得分: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);

    }

}

答案 1 :(得分:0)

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

例如,此代码:

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

表示:对于此映射(ISomething),请解析它AsSomething

注意:此question可以为此答案提供一些背景信息。