Mapper не содержит определения для Initialize AutoMapper C# - PullRequest
0 голосов
/ 13 января 2020

Я реализовал Auto Mapper в своем проекте asp. net C#, но получил ошибку:

Mapper не содержит определения для Initialize

Я пробовал этот пример Ссылка здесь

Я вставил свой код:

namespace NewsWeb.Web.Infrastructure
{
    public class AutomapperWebProfile:Profile
    {
        public AutomapperWebProfile()
        {
            CreateMap<DistrictDTO, District>().ReverseMap();
        }

        public static void Run()
        {
            Mapper.Initialize(a =>
            {
                a.AddProfile<AutomapperWebProfile>();
            });
        }
    }
}

В мой Golbal.asax Файл .cs:

 AutomapperWebProfile.Run();

Изображение ошибки: enter image description here

1 Ответ

1 голос
/ 13 января 2020

Метод Mapper.Initialize устарел, поскольку версия v9.0.0 ( до c), вам нужно использовать MapperConfiguration вместо ( до c).

var config = new MapperConfiguration(cfg => {
    cfg.AddProfile<AutomapperWebProfile>();
});

var mapper = config.CreateMapper();
// or
var mapper = new Mapper(config);

Инициализация картографа методом stati c в Golbal.asax не является гибким решением. Я бы предложил создать конфигурацию непосредственно в пользовательском классе сопоставления.

public interface IFooMapper 
{   
    Foo Map(Bar bar); 
}

public class FooMapper : IFooMapper
{
    private readonly IMapper mapper;

    public FooMapper()
    {
        var config = new MapperConfiguration(cfg =>
        {
            cfg.AddProfile<FooProfile>();
        });

        mapper = config.CreateMapper();
    }

    public Foo Map(Bar bar) => mapper.Map<Foo>(bar);
}
...