2016-12-19 2 views
0

это мой код:Игнорирования несопоставленных членов после ConvertUsing

public class UserProfile:Profile 
{ 
    public UserProfile() 
    { 
     CreateMap<UserViewModel, ApplicationUsers>().ConvertUsing<UserEncryptor>(); 
    } 

} 
public class UserEncryptor : ITypeConverter<UserViewModel, ApplicationUsers> 
{ 
    private readonly IConfigurationRoot _configuration; 
    public UserEncryptor(IConfigurationRoot configuration) 
    { 
     _configuration = configuration; 
    } 

    public ApplicationUsers Convert(UserViewModel source, ApplicationUsers destination, ResolutionContext context) 
    { 
     if (context==null||source == null) return null; 
     var aes = new Common.EncryptionAes(_configuration[key: "Keys:AesKey"]); 
     return new ApplicationUsers 
     { 
      UserName = aes.EncryptAes(source.Username), 
      Email = aes.EncryptAes(source.Email), 
      PhoneNumber = aes.EncryptAes(source.MobileNumber), 
      User = new User 
      { 
       FirstName = aes.EncryptAes(source.FirstName), 
       LastName = aes.EncryptAes(source.LastName), 
       Gender = aes.EncryptAes(source.Gender.ToString()), 
       ProfileImage = aes.EncryptAes(source.ProfileImage.FileName) 
      } 
     }; 
    } 
} 

Обратите внимание, что ApplicationUsers наследуется от IdentityUser класса.

Когда я проверил это отображение, я получил эту ошибку:

System.NullReferenceException: Ссылка на объект не указывает на экземпляр объекта.

Я знаю, что эта ошибка для некоторых членов не игнорируется. Что-то вроде этого

CreateMap<UserViewModel ,ApplicationUsers >() 
.ConvertUsing(converter=> new ApplicationUsers(){ 
Email = converter.Email, 
.... 
}); 

поможет мне, потому что по умолчанию игнорировать остальные член, но проблема в том, что если я хочу использовать этот вид кода, я не могу зашифровать мои член, потому что не имеет доступ к DI конфигурация для профиля. Потому что профиль меньше параметра.

Мне нужно что-то похожее на верхний код, который может реализовываться в функциях ITypeConverter.

У любого есть разрешение?

ответ

0

относятся к этой ссылке GitHub Issue

, что я спросил мой сам, я получил ответ:

В моем тесте я должен определить профиль, как это:

services.AddAutoMapper(typeof(UserProfile));