Ich habe ein Projekt, wo ich Autoadapter 2.2.1 verwendet habe. Ich habe ein Upgrade auf 4.2.1 durchgeführt und bin komplett kaputt. Ich habe versucht, this zu folgen, indem ich alle Verweise auf Mapper.CreateMap<Source, Target>()
zu Mapper.Initialize(cfg => { cfg.CreateMap<Source, Target>()})
änderte. Ich bin jetzt gebrochen schlecht und ich kann nicht scheinen, es zu tun.Ich bekomme "System.Reflection.ReflectionTypeLoadException wurde von Benutzer-Code-Ausnahme mit Unable, um einen oder mehrere der angeforderten Typen kann nicht behandelt. Abrufen der LoaderExceptions-Eigenschaft für mehr Informationen ", Nachricht. Was vermisse ich. Code sieht wie folgt aus:Migrieren zu Automapper 4.2.1 von Automapper 2.2.1
AutomapperTypeAdapterFactory
public class AutomapperTypeAdapterFactory : ITypeAdapterFactory
{
public AutomapperTypeAdapterFactory()
{
//scan all assemblies finding Automapper Profile
var profiles = AppDomain.CurrentDomain
.GetAssemblies()
.SelectMany(a => a.GetTypes())
.Where(t => t.BaseType == typeof(Profile));
Mapper.Initialize(cfg =>
{
foreach (var item in profiles)
{
if (item.FullName != "AutoMapper.SelfProfiler`2")
cfg.AddProfile(Activator.CreateInstance(item) as Profile);
}
});
}
public ITypeAdapter Create() => new AutomapperTypeAdapter();
}
Abteilung Profil
public class DepartmentProfile : Profile
{
protected override void Configure()
{
Mapper.Initialize(cfg =>
{
cfg.CreateMap<Department, DepartmentDto>();
});
}
}
UnityContainer
public static class Container
{
static IUnityContainer _container = new UnityContainer();
static Container()
{
var typeAdapterFactory = _container.Resolve<ITypeAdapterFactory>();
TypeAdapterFactory.SetCurrent(typeAdapterFactory);
}
//other container resolutions....
}
Ist Ihr 'public static Container RegisterAutoMapper (dieser Container container)' in einer Klasse enthalten, die von der Registry erbt? oder wo ist ** AutoMapperRegistry ** in 'var profiles = typeof (AutoMapperRegistry) .Assembly.GetTypes() ...' von? @James – mkaris
Es ist in einer Klasse namens 'AutoMapperRegistry' Ja, obwohl diese Klasse nur verwendet wird einen gewissen Spielraum für die Suche nach 'Profil'-Typen in den Assemblys meiner Anwendung. Sie könnten stattdessen so etwas verwenden: 'Assembly.GetExecutingAssembly(). GetTypes() ...' – James
Ich verwende die Einheit, aber ich kann nicht darüber nachdenken, wie dies in die Einheit 'container.Register (() => config); container.Register (() => container.GetInstance (). CreateMapper()); ' –
mkaris