web-dev-qa-db-fra.com

Comment savoir si automapper a déjà été initialisé?

Existe-t-il un moyen de savoir si automapper a déjà été initialisé? Par exemple:

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

Merci!

7
Gaspa79

Essayez d'utiliser:

AutoMapper.Mapper.Configuration.AssertConfigurationIsValid();

Il jette System.InvalidOperationException...Mapper not initialized. Call Initialize with appropriate configuration..

5
Andrii Nikolaienko

Vous pouvez appeler Mapper.Reset(); avant d’initialiser votre mappeur. Je le fais lors de l'initialisation de mes classes de tests unitaires:

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

Fondamentalement, vous essayez de configurer le mappeur à plusieurs endroits de votre code, si je comprends bien, vous essayez de résoudre le problème en centralisant la configuration.

Ce problème pourrait également être résolu en utilisant l'API d'instance, où plusieurs configurations (une par instance) sont possibles (pour les architectures plug-in ou plus séparées) http://docs.automapper.org/en/stable/Static -and-Instance-API.html

0
FrankM

Vous pouvez également envelopper votre initialisation dans un essai/capture. Cela attrape et écrase toute erreur. 

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

        }
    }
0
jGroot