我正在尝试创建从通用卡片类继承的各种卡片的表示形式,并且所有卡片都包含对其拥有的牌组的引用。
我尝试按照此处的建议重新声明它们,但它仍然不会转换为特定的卡类型。
我目前拥有的代码是这样的:
public class Deck<T> : List<T>
where T : Card
{
void Shuffle()
{
throw new NotImplementedException("Shuffle not yet implemented.");
}
}
public class Card
{
public Deck<Card> OwningDeck { get; set; }
}
public class FooCard : Card
{
public Deck<FooCard> OwningDeck
{
get
{
return (Deck<FooCard>)base.OwningDeck;
}
set
{
OwningDeck = value;
}
}
}
我得到的编译时错误:错误 2 无法将类型转换Game.Cards.Deck<Game.Cards.Card>
为Game.Cards.Deck<Game.Cards.FooCard>
还有一个警告,建议我使用新的运算符来指定隐藏是故意的。这样做会违反惯例吗?有没有更好的办法?
我对 stackoverflow 的问题是:我想做的事情可以在 .NET 类型系统中优雅地完成吗?如果是这样,可以提供一些例子吗?