Open OtavioVB opened 2 years ago
@OtavioVB,
public bool IsValid => _notifications.Any() == false;
e
public IReadOnlyCollection<T> Notifications => _notifications;
são implementados na classe abstrata Notifiable<T>
. Sendo assim, ao herdar de Notifiable<T>
sua classe já possuirá essas propriedades.
Em seu último exemplo você está herdando de notifiable pela sua interface IRequestUser
. O correto seria herdar Notifiable<T>
diretamente em sua implementação da classe RequestUser
.
Segue um exemplo:
public class RequestUser : Notifiable<Notification>
{
public RequestUser() { }
public string Email { get; private set; }
public string Name { get; private set; }
public string Nickname { get; private set; }
public string Password { get; private set; }
public string PasswordNotEncrypted { get; private set; }
public DateTime RegisterDate { get; private set; }
public DateTime RegisterTime { get; private set; }
}
Desta forma ao instanciar sua classe, ela já possuirá as propriedades herdadas.
var requestUser = new RequestUser();
...
requestUser.Notifications;
requestUser.IsValid;
Você deve utilizar as Interfaces para definir contratos informando métodos. Caso precise definir propriedades, utilize uma classe abstrata para as propriedades e herde para definir os métodos de contrato.
Exemplo:
public interface UmaInterface
{
void AlgumMetodo();
}
public abstract class ClasseAbstrata : UmaInterface
{
public string AlgumaPropriedade { get; set; }
}
public class SuaClasseFinal : ClasseAbstrata
{
public void AlgumMetodo()
{
}
var suaClasse = new SuaClasseFinal();
// Agora sua classe possui métodos e propriedades.
suaClasse.AlgumaPropriedade;
suaClasse.AlgumMetodo()
}
Percebi a necessidade de criação de interfaces para a classe Notifiable para facilitar a
realização de testes
eherança entre contratos
.Algumas interfaces de meu projeto como essa:
Acaba precisando implementar
Para ter esses atributos utilizados normalmente em um
GET
. Sendo assim, acredito que seja necessário criar uma interface para Notifiable:Assim:
Nas próximas vezes, em outras classes não será necessário repetir a abstração dos atributos de Notifiable...