Quindi in poche parole ho una classe astratta:
public abstract class Member
{
public string PCode { get; set; }
public string Reference { get; set; }
public DateTime? ElectedDate { get; set; }
}
E questo è ereditato da 3 altre classi:
public class Fellow : Member
{
// some class level properties here
}
public class ForeignMember : Member
{
// some class level properties here
}
public class HonoraryMember : Member
{
// some class level properties here
}
E le normali operazioni CRUD vengono eseguite utilizzando un modello di repository generico:
Interfaccia
public interface ICRMRepository<T>
{
List<T> GetAll();
T GetById(int id);
T GetByPCode(string pcode);
}
Class
public class CRMRepository<T> : ICRMRepository<T> where T : class
{
public List<T> GetAll()
{
//actions go here
}
public T GetById(int id)
{
//actions go here
}
public T GetByPCode(string pcode)
{
//actions go here
}
}
La domanda è se volessi fare una query che riportasse tutti i Fellows, HonoraryMembers e ForeignMembers in un set di risultati, come potrei fare questo?
Sarebbe meglio avere un'interfaccia invece dell'eredità, ad es. Imember, e quindi le tre classi usano quell'interfaccia? O qualche soluzione che usa entrambi?