我有一个接口IJob,所有Job类都继承了它,我有一个通用的repo类,它将处理所有类型的IJob.
我面临的问题是我无法转换Repository<Job1>为Repository<IJob>即使Job1是一种类型IJob.
码
internal class Program
{
public interface IJob { }
public class Job1 : IJob { }
public class Job2 : IJob { }
public class Repository<TJob>
where TJob : IJob
{
public List<TJob> GetJobs()
{
return new List<TJob>();
}
}
private static void Main(string[] args)
{
IJob iJob = new Job1(); // Valid
Repository<IJob> repo = new Repository<Job1>(); // Not Valid
}
}
Run Code Online (Sandbox Code Playgroud)
有人能让我知道为什么在C#中这是不可能的,并且在C#泛型中是否还有其他规则类型转换?