У меня есть 2 модели (EndUser и EndUserServicesDTO имеют похожую логику, но существуют на двух разных уровнях)
public class EndUserServicesDTO
{
public string FirstName { get; set; }
public string LastName { get; set; }
public string Email { get; set; }
public string PhoneNumber { get; set; }
public string Role { get; set; }
public string Password { get; set; }
public string RetypePassword { get; set; }
}
public class AppDeveloperServicesDTO : EndUserServicesDTO
{
public string CompanyName { get; set; }
public string CompanyAdress { get; set; }
public string CompanyEmail { get; set; }
public string CompanyPhoneNumber { get; set; }
public string CompanyWebSite { get; set; }
}
и у меня есть 2 метода в разных репозиториях
private readonly IMongoUOWRepositoryGeneric<EndUser> _userManager;
public async Task<bool> AddAsync(EndUserServicesDTO userServicesDTO)
{
EndUser user = _mapper.Map<EndUser>(userServicesDTO);
user.PasswordHash = PBKDF2Hasher.HashPassword(userServicesDTO.Password);
await _userManager.Clients.AddAsync(user);
return true;
}
private readonly IMongoUOWRepositoryGeneric<AppDeveloper> _developerManager;
public async Task<bool> AddAsync(AppDeveloperServicesDTO developerServicesDTO)
{
AppDeveloper developer = _mapper.Map<AppDeveloper>(developerServicesDTO);
developer.PasswordHash = PBKDF2Hasher.HashPassword(developerServicesDTO.Password);
await _developerManager.Clients.AddAsync(developer);
return true;
}
оба метода имеют одинаковую функциональность для добавления, но используются для разных моделей. Не могли бы вы мне посоветовать написать один и тот же универсальный метод для того, чтобы помнить точный сценарий?
Что я пробовал до сих пор
ведет к классу EndUser
, но если я это сделаю, я удаляю свойства компании в Developer model
и сохраняю их без него, в противном случае я не могу использовать .PasswordHash
для свойства Password
и понятия не имею Как сделать это с помощью универсального метода.