我有一個泛型類和通用接口是這樣的:依賴注入的泛型類
public interface IDataService<T> where T: class
{
IEnumerable<T> GetAll();
}
public class DataService<T> : IDataService<T> where T : class
{
public IEnumerable<T> GetAll()
{
return Seed<T>.Initialize();
}
}
public static IEnumerable<T> Initialize()
{
List<T> allCalls = new List<T>();
....
return allCalls;
}
在我StartUp.cs我掛鉤的類和接口
現在
public void ConfigureServices(IServiceCollection services)
{
services.AddTransient(typeof(IDataService<>), typeof(DataService<>));
...
}
當我嘗試在我的例子中使用它Repository.cs始終爲空。
public class Repository<T> : IRepository<T> where T : class
{
private readonly IDataService<T> _dataService;
public Repository(IDataService<T> dataService)
{
_dataService = dataService;
...
}
...
}
編輯 這裏是要求倉庫接口和類
public interface IRepository<T> where T : class
{
double GetCallPrice(T callEntity, Enum billingType);
double GetCallPriceFromIdAndBillingType(int id, Enum billingType);
}
而且Repository.cs類
public class Repository<T> : IRepository<T> where T : class
{
private readonly IDataService<T> _dataService;
private IEnumerable<T> _allCalls;
public Repository(IDataService<T> dataService)
{
_dataService = dataService;
}
public double GetCallPrice(int id)
{
_allCalls = _dataService.GetAllCalls();
...
}
...
}
你正在做的事情錯了,你是不是在你的問題顯示。此外,據我所知,內建的ASP.NET Core DI容器不允許向構造函數中注入「null」值。請說明你如何註冊和解決'Repository',或者更確切地說:請創建一個[最小,完整和可驗證的示例](https://stackoverflow.com/help/mcve)。 –
Steven