我如何知道automapper是否已经初始化?

时间:2018-02-23 16:42:02

标签: c# automapper

有没有办法知道automapper是否已经初始化? 例如:

AutoMapper.Mapper.IsInitialized(); // would return false
AutoMapper.Mapper.Initialize( /*options here*/ );
AutoMapper.Mapper.IsInitialized(); // would return true

谢谢!

4 个答案:

答案 0 :(得分:9)

您可以在初始化映射器之前调用Mapper.Reset();。我在初始化单元测试类时这样做:

[ClassInitialize]
public static void ClassInitializer(TestContext context)
{
    Mapper.Reset();
    AutoMapperDataConfig.Configure();            
}

答案 1 :(得分:6)

尝试使用:

AutoMapper.Mapper.Configuration.AssertConfigurationIsValid();

抛出System.InvalidOperationException...Mapper not initialized. Call Initialize with appropriate configuration.

答案 2 :(得分:0)

基本上,您正在尝试在代码中的多个位置配置Mapper,据我所知,您正在尝试通过集中配置来解决此问题。

此问题也可以通过使用Instance API来解决,其中可以进行多个(每个实例一个)配置(对于插件或更多分离的体系结构) http://docs.automapper.org/en/stable/Static-and-Instance-API.html

答案 3 :(得分:0)

您还可以将“初始化”包装在“尝试/捕获”中。这样可以捕获并消除任何错误。

private void InitializeMapper()
    {
        try
        {
            Mapper.Initialize(cfg =>
            {
                cfg.AddProfile<MyProfile>();
            });
        }
        catch
        {

        }
    }