• AutoMapper: Mapper.Initialize() 只能调用一次,Why?


    最开始的代码

     1 using System;
     2 using System.Collections.Generic;
     3 using System.Linq;
     4 using System.Text;
     5 using System.Threading.Tasks;
     6 using System.Reflection;
     7 
     8 using AutoMapper;
     9 
    10 using Happy.ExtentionMethods;
    11 using Happy.Bootstrap;
    12 
    13 namespace Happy.Bootstrap.AutoMapper
    14 {
    15     /// <summary>
    16     /// 自动添加配置。
    17     /// </summary>
    18     public class AutoAddProfilePlugin : IBootstrapPlugin
    19     {
    20         /// <inheritdoc />
    21         public void Start(IBootstrapService bootstrapService, Assembly assembly)
    22         {
    23             bootstrapService.MustNotNull("bootstrapService");
    24             assembly.MustNotNull("assembly");
    25 
    26             foreach (var type in assembly.GetTypes())
    27             {
    28                 if (type.IsAbstract || type.IsInterface)
    29                 {
    30                     continue;
    31                 }
    32 
    33                 if (typeof(Profile).IsAssignableFrom(type))
    34                 {
    35                     Mapper.Initialize(x => {
    36                         x.AddProfile(Activator.CreateInstance(type) as Profile);
    37                     });
    38                 }
    39             }
    40         }
    41     }
    42 }

    问题

    我的项目中,每个 dll 都是自描述的,系统启动的时候,对每个 dll 对执行上面的插件,结果, Mapper.Initialize() 只有最后一次配置才有效,前面的配置会丢失。

    最后的代码

     1 using System;
     2 using System.Collections.Generic;
     3 using System.Linq;
     4 using System.Text;
     5 using System.Threading.Tasks;
     6 using System.Reflection;
     7 
     8 using AutoMapper;
     9 
    10 using Happy.ExtentionMethods;
    11 using Happy.Bootstrap;
    12 
    13 namespace Happy.Bootstrap.AutoMapper
    14 {
    15     /// <summary>
    16     /// 自动添加配置。
    17     /// </summary>
    18     public class AutoAddProfilePlugin : IBootstrapPlugin
    19     {
    20         /// <inheritdoc />
    21         public void Start(IBootstrapService bootstrapService, Assembly assembly)
    22         {
    23             bootstrapService.MustNotNull("bootstrapService");
    24             assembly.MustNotNull("assembly");
    25 
    26             foreach (var type in assembly.GetTypes())
    27             {
    28                 if (type.IsAbstract || type.IsInterface)
    29                 {
    30                     continue;
    31                 }
    32 
    33                 if (typeof(Profile).IsAssignableFrom(type))
    34                 {
    35                     Mapper.AddProfile(Activator.CreateInstance(type) as Profile);
    36                 }
    37             }
    38         }
    39     }
    40 }
  • 相关阅读:
    实现分布式爬虫
    hadoop安装文档
    远程连接mysql和redis配置
    scrapy(2)
    10月10号动手动脑
    10月6日和动手动脑
    10月4日
    课程总结
    又学java的第一天
    第一节测试总结
  • 原文地址:https://www.cnblogs.com/happyframework/p/3516862.html
Copyright © 2020-2023  润新知