2017-10-09 4 views
0

J'ai un référentiel générique comme ce qui permet Id d'être hors de différents types (TKey)référentiel générique avec un identifiant de différents types

public interface IGenericRepository<TEntity, TKey> where TEntity : class 
{ 
    Task<TEntity> GetByIdAsync(TKey id); 
    Task<IEnumerable<TEntity>> ListAllAsync(); 
    Task<IEnumerable<TEntity>> ListAsync(string criteriaName, DynamicParameters parameters); 
    Task<TEntity> CreateAsync(TEntity entity); 
    Task UpdateAsync(TEntity entity); 
    Task DeleteAsync(TKey id); 
} 

Comment puis-je injecter cela dans les services de base .net 2? Je vois des exemples comme celui-ci

services.AddTransient(typeof(IGenericRepository<>), typeof(GenericRepository<>)); 

qui fonctionne si je trouve supprimer TKey et fixer le Id à un INT. Mais je veux que l'Id soit flexible. C'est parfois un guid ou un int. Je pourrais faire le type de chaîne d'identification mais qui se sent paresseux et faux!

+0

Vous pouvez supprimer la définition des médicaments génériques de l'interface qui vous permettra d'appeler les méthodes avec un '' TEntity' et TKey' (ou même déduisent 'TKey' de l'entité). –

Répondre

0
services.AddTransient(typeof(IGenericRepository<,>), typeof(GenericRepository<,>)); 

C'est ce qui a fonctionné pour moi.