zoukankan      html  css  js  c++  java
  • 静态和实例初始化映射

    In 4.2.1 version of AutoMapper and later, AutoMapper provides two APIs: a static and an instance API. The static API:

    Mapper.Initialize(cfg => {
        cfg.AddProfile<AppProfile>();
        cfg.CreateMap<Source, Dest>();
    });
    
    var dest = Mapper.Map<Source, Dest>(new Source());
    

    And the instance API:

    var config = new MapperConfiguration(cfg => {
        cfg.AddProfile<AppProfile>();
        cfg.CreateMap<Source, Dest>();
    });
    
    var mapper = config.CreateMapper();
    // or
    IMapper mapper = new Mapper(config);
    var dest = mapper.Map<Source, Dest>(new Source());
    

    Gathering configuration before initialization

    AutoMapper also lets you gather configuration before initialization:

    var cfg = new MapperConfigurationExpression();
    cfg.CreateMap<Source, Dest>();
    cfg.AddProfile<MyProfile>();
    MyBootstrapper.InitAutoMapper(cfg);
    
    Mapper.Initialize(cfg);
    // or
    var mapperConfig = new MapperConfiguration(cfg);
    IMapper mapper = new Mapper(mapperConfig);
    
    

    LINQ projections

    For the instance method of using AutoMapper, LINQ now requires us to pass in the MapperConfiguration instance:

    public class ProductsController : Controller {
        public ProductsController(MapperConfiguration config) {
            this.config = config;
        }
        private MapperConfiguration config;
    
        public ActionResult Index(int id) {
            var dto = dbContext.Products
                                   .Where(p => p.Id == id)
                                   .ProjectTo<ProductDto>(config)
                                   .SingleOrDefault();
    
            return View(dto);
        }    
    }
    

    Unsupported operations

    One "feature" of AutoMapper allowed you to modify configuration at runtime. That caused many problems, so the new static API does not allow you to do this. You'll need to move all your Mapper.CreateMap calls into a profile, and into a Mapper.Initialize.

    For dynamic mapping, such as Mapper.DynamicMap, you can configure AutoMapper to create missing maps as needed:

    Mapper.Initialize(cfg => cfg.CreateMissingTypeMaps = true);
    

    Internally this uses conventions to create maps as necessary.

  • 相关阅读:
    美丽的姑娘,你何时才能重现?
    成功三步曲:有勇、有谋、有德
    比目标远一点点,结果也许令你惊讶
    走别人的路,让别人无路可走!
    白领们注意啦:“过劳死”27个危险信号!
    企业发展靠创新,还是靠美女?
    学会和同事相处的30个原则
    上海雄联机械配件有限公司
    C# Keywords>Access Keywords
    Feature event receviers
  • 原文地址:https://www.cnblogs.com/Leman/p/5774383.html
Copyright © 2011-2022 走看看