J'utilise AutoMapper.Extensions.Microsoft.DependencyInjection
Nuget dans mon projet .net core 3.1. Le code de mon application console est le suivant ( peut être exécuté par copier-coller et installer le paquet AutoMapper.Extensions.Microsoft.DependencyInjection pour reproduire l'erreur. ).
Je n'écris aucune cartographie. J'utilise l'Automapper uniquement pour les objets clonés comme dans le code ci-dessous. Lorsque j'utilise le paquet 6.1.0, tout fonctionne parfaitement. . Mais lorsque je mets à jour 6.1.1 ou 7.0.0, j'obtiens une erreur.
Missing type map configuration or unsupported mapping. Mapping types: Foo -> FooDto AutomapperProject.Foo -> AutomapperProject.FooDto
.
Quelle peut en être la raison ?
using AutoMapper;
namespace AutomapperProject
{
internal class Program
{
private static void Main(string[] args)
{
var foo = new Foo { Id = 1, Name = "Foo" };
var dto = MapperHelper.MapFrom<FooDto>(foo);
}
}
public static class AutomapperExtensions
{
private static void IgnoreUnmappedProperties(TypeMap map, IMappingExpression expr)
{
foreach (string propName in map.GetUnmappedPropertyNames())
{
var srcPropInfo = map.SourceType.GetProperty(propName);
if (srcPropInfo != null)
expr.ForSourceMember(propName, opt => opt.DoNotValidate());
var destPropInfo = map.DestinationType.GetProperty(propName);
if (destPropInfo != null)
expr.ForMember(propName, opt => opt.Ignore());
}
}
public static void IgnoreUnmapped(this IProfileExpression profile)
{
profile.ForAllMaps(IgnoreUnmappedProperties);
}
}
public static class MapperHelper
{
private static IMapper Mapper()
{
var mapperConfig = new MapperConfiguration(configuration=>{configuration.IgnoreUnmapped();});
return mapperConfig.CreateMapper();
}
public static T MapFrom<T>(object entity)
{
return Mapper().Map<T>(entity);
}
}
public class Foo
{
public int Id { get; set; }
public string Name { get; set; }
}
public class FooDto
{
public int Id { get; set; }
public string Name { get; set; }
public string Unmapped { get; set; }
}
}