【发布时间】:2020-09-21 13:10:31
【问题描述】:
是否可以将泛型对象作为参数传递给从预期类类型派生的类类型?
下面的代码导致编译器错误,cannot convert from ItemObject<Equipment> to ItemObject<Item>,我觉得这很奇怪,因为 Equipment 继承自 Item。
using System.Collections.Generic;
public abstract class Item { }
public abstract class Equipment : Item { }
public class ItemObject<T> where T : Item { }
public class EquipmentManager
{
ItemObject<Equipment> equipment = new ItemObject<Equipment>();
public void Unequip()
{
Inventory.instance.AddItem(equipment);
}
}
public class Inventory
{
public static Inventory instance;
List<ItemObject<Item>> items = new List<ItemObject<Item>>();
public void AddItem(ItemObject<Item> _item)
{
items.Add(_item);
}
}
【问题讨论】:
-
您的 Equipment 类不应该从 ItemObject
继承吗?
标签: c# generics inheritance arguments