zoukankan      html  css  js  c++  java
  • How to use AutoMapper

    http://docs.automapper.org/en/stable/Getting-started.html

      IMappingExpression<TSource, TDestination> CreateMap<TSource, TDestination>(MemberList memberList);

    Mapper.Initialize(cfg => cfg.CreateMap<Order, OrderDto>());
    //or
    var config = new MapperConfiguration(cfg => cfg.CreateMap<Order, OrderDto>());


       IMappingExpression<TSource, TDestination> ForMember<TMember>(Expression<Func<TDestination, TMember>> destinationMember, Action<IMemberConfigurationExpression<TSource, TDestination, TMember>> memberOptions);


    var mapper = config.CreateMapper();
    // or
    var mapper = new Mapper(config);
    OrderDto dto = mapper.Map<OrderDto>(order);
    // or
    OrderDto dto = Mapper.Map<OrderDto>(order);
     

    C# : Converting Base Class to Child Class

    https://stackoverflow.com/a/25653977/3782855

    'm surprised AutoMapper hasn't come up as an answer.

    As is clear from all the previous answers, you cannot do the typecast. However, using AutoMapper, in a few lines of code you can have a new SkyfilterClient instantiated based on an existing NetworkClient.

    In essence, you would put the following where you are currently doing your typecasting:

    using AutoMapper;
    ...
    // somewhere, your network client was declared
    var existingNetworkClient = new NetworkClient();
    ...
    // now we want to type-cast, but we can't, so we instantiate using AutoMapper
    AutoMapper.Mapper.CreateMap<NetworkClient, SkyfilterClient>();
    var skyfilterObject = AutoMapper.Mapper.Map<SkyfilterClient>(existingNetworkClient);

    Here's a full-blown example:

     public class Vehicle
      {
        public int NumWheels { get; set; }
        public bool HasMotor { get; set; }
      }
    
      public class Car: Vehicle
      {
        public string Color { get; set; }
        public string SteeringColumnStyle { get; set; }
      }
    
      public class CarMaker
      {
        // I am given vehicles that I want to turn into cars...
        public List<Car> Convert(List<Vehicle> vehicles)
        {
          var cars = new List<Car>();
          AutoMapper.Mapper.CreateMap<Vehicle, Car>(); // Declare that we want some automagic to happen
          foreach (var vehicle in vehicles)
          {
            var car = AutoMapper.Mapper.Map<Car>(vehicle);
            // At this point, the car-specific properties (Color and SteeringColumnStyle) are null, because there are no properties in the Vehicle object to map from.
            // However, car's NumWheels and HasMotor properties which exist due to inheritance, are populated by AutoMapper.
            cars.Add(car);
          }
          return cars;
        }
      }
     
  • 相关阅读:
    N25_复杂链表的复制
    N24_二叉树中和为某一路径
    N23_判断是否为二叉搜索树的后序遍历序列
    N22_从上到下打印二叉树
    win7桌面小工具已停止工作解决办法
    C3P0数据库连接池使用
    js中的页面跳转
    怎么用js代码禁止浏览器的前进与后退?
    怎么在 Dos 下运行 PHP 和 MySQL 命令
    80端口被system 占用解决方法
  • 原文地址:https://www.cnblogs.com/chucklu/p/8978932.html
Copyright © 2011-2022 走看看