我定义了以下接口:
public interface ICustomService<T> where T : CustomObject
{
IEnumerable<T> GetById(int Id);
...
}
Run Code Online (Sandbox Code Playgroud)
它的 2 个实现,其中MyObject1&MyObject2都继承自CustomObject
public class CustomService1 : ICustomService<MyObject1>
{
public IEnumerable<MyObject1> GetById(int Id)
{
...
}
}
Run Code Online (Sandbox Code Playgroud)
public class CustomService2 : ICustomService<MyObject2>
{
public IEnumerable<MyObject2> GetById(int Id)
{
...
}
}
Run Code Online (Sandbox Code Playgroud)
我尝试将这两个注册为ICustomService<CustomObject>但收到错误:
没有从“CustomerService1”到“ICustomService<CustomObject>”的隐式引用转换
相反,像这样注册:
services.AddTransient<ICustomService<MyObject1>, CustomService1>();
services.AddTransient<ICustomService<MyObject2>, CustomService2>();
Run Code Online (Sandbox Code Playgroud)
当像上面那样注册时,我的 IEnumerableservices是空的:
public ThirdService(IEnumerable<ICustomService<CustomObject>> services)
{
}
Run Code Online (Sandbox Code Playgroud)
如何将所有实现注入ICustomService到ThirdService?
我正在尝试这样做,以便ThirdService可以给定一个 ID,然后在所有服务上CustomObject使用该 ID来获取所有内容。 …