Comment puis-je obtenir quelque chose comme ce qui suit?Référentiel générique MVC C# avec nom de colonne personnalisé
public interface IGenericRepository
{
int id { get; }
T GetById<T>() where T : class
}
public class GenericRepository : IGenericRepository
{
//Some code here
public T GetById<T>(int tid) where T : class
{
return from tbl in dataContext.GetTable<T> where tbl.id == tid select tbl;
}
}
Et je voudrais l'utiliser comme suit:
GenericRepository gr = new GenericRepository();
Category cat = gr.GetById<Category>(15);
Bien sûr, dans cet usage, tbl.id
dans le GenericRepository me donne une erreur.
SOLUTION
public class IHasId
{
public int id { get; set; }
}
public interface IGenericRepository
{
int id { get; }
T GetById<T>(int id) where T : IHasId;
}
public class GenericRepository : IGenericRepository
{
public int id
{
get { throw new NotImplementedException(); }
}
public T GetById<T>(int id) where T : IHasId
{
return from tbl in dataContext.GetTable<T> where tbl.id == tid select tbl;
}
}
Et en dehors de ceux-ci, ne pas oublier de définir cela quelque part dans votre modèle:
public partial class Category : IHasId { }
Et l'utilisation est:
Repository rep = new Repository();
Category cat = rep.GetById<Category>(15);
Damn !! J'ai finalement compris le problème, mis à part ces codes, j'ai dû créer une classe partielle pour chaque entité que j'utilise. Dites, j'ai une table Catégorie, j'ai dû créer une Catégorie partielle publique avec l'héritage IBase !! Merci mec!! – Shaokan
héritage IHasId désolé :) – Shaokan