我想學習如何用c#創建泛型類。有人可以解釋爲什麼我運行這個程序時出現編譯錯誤。C#泛型與接口
我創建了IZooAnimal接口。所有的動物園動物都會實現這個界面。
public interface IZooAnimal
{
string Id { get; set; }
}
public class Lion : IZooAnimal
{
string Id { get; set; }
}
public class Zebra : IZooAnimal
{
public string Id { get; set; }
}
的ZooCage將持有同一類型
public class ZooCage<T> where T : IZooAnimal
{
public IList<T> Animals { get; set; }
}
動物園類的動物有籠子
public class Zoo
{
public IList<ZooCage<IZooAnimal>> ZooCages { get; set; }
}
使用類節目
class Program
{
static void Main(string[] args)
{
var lion = new Lion();
var lionCage = new ZooCage<Lion>();
lionCage.Animals = new List<Lion>();
lionCage.Animals.Add(lion);
var zebra = new Zebra();
var zebraCage = new ZooCage<Zebra>();
zebraCage.Animals = new List<Zebra>();
zebraCage.Animals.Add(zebra);
var zoo = new Zoo();
zoo.ZooCages = new List<ZooCage<IZooAnimal>>();
zoo.ZooCages.Add(lionCage);
}
}
當我編譯我得到以下結果翼錯誤: 錯誤2參數1:無法從「ConsoleApplication2.ZooCage<ConsoleApplication2.Lion>
」轉換爲「ConsoleApplication2.ZooCage<ConsoleApplication2.IZooAnimal>
」
我有什麼變化,以使我的程序運行呢?
閱讀關於協方差和反變量......也許開始[這裏](http://stackoverflow.com/q/2033912/644812)? –