2017-10-09 73 views
0

的ID我有一個通用的存儲庫這樣的,它允許標識要關閉不同類型(TKEY的)通用庫與不同類型的

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); 
} 

如何在.net中的核心2服務注入呢?我看到類似這樣的示例

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

如果我刪除TKey並將Id修復爲INT,則可以找到它。但是我希望Id很靈活。即有時它是一個guid或int。我可以使用Id類型的字符串,但感覺很懶,也錯了!

+0

您可以從接口中刪除泛型定義,該泛型定義允許您使用任何「TEntity」和「TKey」調用方法(甚至可以從實體中推導出「TKey」)。 –

回答

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

這就是爲我工作的。