Как использовать Custom mapper с IObjectMapper на сервисе - PullRequest
0 голосов
/ 15 мая 2019

Работа над основным проектом aspnetboilerplate asp.net, столкновение с трудностями при настраиваемом отображении. Я хочу создать пользовательскую карту и использовать ее несколько раз, как AUTOMAP profiler.Follow Документация , но не смог реализовать это в моем проекте. Мои шаги

1) Создайте класс MyModule под XXX.Core

 [DependsOn(typeof(AbpAutoMapperModule))]
    public class MyModule : AbpModule
    {
        public override void PreInitialize()
        {
            Configuration.Modules.AbpAutoMapper().Configurators.Add(config =>
            {
                config.CreateMap<CreateUserInput, CreatUserOutput>()
                      .ForMember(u => u.Password, options => options.Ignore())
                      .ForMember(u => u.OutputEmailAddress, options => options.MapFrom(input => input.EmailAddress));
            });
        }
    }



    public class CreateUserInput
    {
        public string Name { get; set; }

        public string Surname { get; set; }

        public string EmailAddress { get; set; }

        public string Password { get; set; }
    }

    public class CreatUserOutput
    {
        public string OutputName { get; set; }

        public string Surname { get; set; }

        public string OutputEmailAddress { get; set; }

        public string Password { get; set; }
    }

2) Использованная выше конфигурация на xxx.Применение, обслуживание, как показано ниже

try
            {
                CreateUserInput te = new CreateUserInput
                {
                    EmailAddress = "a@yahoo.com",
                    Name = "input",
                    Password = "test",
                    Surname = "sure"
                };

                CreatUserOutput ot = new CreatUserOutput();

                var temp = _objectMapper.Map<CreatUserOutput>(te);
            }
            catch (System.Exception ex)
            {


            }

Я не понимаю, как использовать настраиваемый сопоставитель с моим введенным IObjectMapper в службе.

1 Ответ

0 голосов
/ 19 мая 2019

Лучше создать отдельный профиль автопроизводителя. Вам нужно создать файл точно в приложении слое Вы можете назвать это, например, AutoMapperProfile.cs со следующим:

 public class AutoMapperProfile : AutoMapper.Profile {
     public AutoMapperProfile () {

         CreateMap<CreateUserInput, CreatUserOutput> ()
             .ForMember (u => u.Password, options => options.Ignore ())
             .ForMember (u => u.OutputEmailAddress, options => options.MapFrom (input => input.EmailAddress));

     }
 }

чтобы этот код работал, убедитесь, что вы ApplicationModule.cs содержать следующий код, который отвечает за загрузку профилей.

public override void Initialize () {
    var thisAssembly = typeof (LicenseManagerApplicationModule).GetAssembly ();

    IocManager.RegisterAssemblyByConvention (thisAssembly);

    Configuration.Modules.AbpAutoMapper ().Configurators.Add (
        // Scan the assembly for classes which inherit from AutoMapper.Profile
        cfg => cfg.AddProfiles (thisAssembly)
    );
}
...