Mam takie pytanie jak powinno się w poprawny sposób implementować encje, gdzie sprawdzamy np unikalność. Na necie różnie piszą np. żeby wstrzykiwać serwis czy to jest dobre podejście?
np, tak
public class User : Entity
{
public UserId Id { get; private set; }
public ContactDetails ContactDetails { get; private set; }
public string Email { get; private set; }
public void Register(string email, ContactDetails contactDetails, IUserService userService)
{
if (!userService.IsEmailExists(email))
return;
Email = email;
ContactDetails = contactDetails;
}
}
Serwis mam podzielony na 3 projekty Domain / Infrastructure / API. w Api trzymam handlery i validatory.
Czy może powinno się sprawdzić w command handlerze, albo może w validatorze jak używam fluent validatora?
Albo może powinienem w klasie User utworzyć sobie tam listę prywatną Users i wstrzykiwać ich przez konstruktor i tak sprawdzać ?
public class User : Entity
{
private List<User> _users;
public UserId Id { get; private set; }
public ContactDetails ContactDetails { get; private set; }
public string Email { get; private set; }
public User(List<User> users)
{
_users = users;
}
public void Register(string email, ContactDetails contactDetails)
{
if (_users.Any(x => x.Email == email))
return;
Email = email;
ContactDetails = contactDetails;
}
}
Jakie jest poprawne podejście ?