это мой код:Игнорирования несопоставленных членов после 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.
У любого есть разрешение?