【发布时间】:2022-11-29 00:27:51
【问题描述】:
为什么我不能转换具体实现通用接口的接口实现?我需要 Cat、Dog 等自己的接口实现。
public interface IMarker {}
public class ResultA : IMarker {//some code}
public class ResultB : IMarker {//some code}
public interface IService<T> where T : IMarker
{
public List<T> DoStuff();
}
public interface ICatService : IService<ResultA> {//some code}
public interface IDogService : IService<ResultB> {//some code}
public class CatService : ICatService
{
public List<ResultA> DoStuff() { return new List<ResultA>();}
}
public class DogService : IDogService
{
public List<ResultB> DoStuff() {return new List<ResultB>();}
}
public abstract class Animal
{
protected readonly IService<IMarker> _svc;
protected Animal(IService<IMarker> svc)
{
_svc = svc;
}
}
public class Cat(ICatService svc) : base(svc){}
public class Dog(IDogService svc) : base(svc){}
CS1503 参数 2:无法从“ICatService”转换为“IService”
我有 DI 服务,即:
services.AddTransient<ICatService, CatService>();
【问题讨论】:
-
请为
Cat添加基类。您的原始代码没有重现该问题。
标签: c#