小编Eir*_*son的帖子

C#泛型之间是否有类型转换规则?

我有一个接口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#泛型中是否还有其他规则类型转换?

c# generics

18
推荐指数
2
解决办法
831
查看次数

标签 统计

c# ×1

generics ×1