ジェネリック カード クラスから継承し、所有するデッキへの参照をすべて含む、さまざまなタイプのカードの表現を作成しようとしています。
ここで提案されているように、それらを再宣言しようとしましたが、それでも特定のカード タイプに変換されません。
私が現在持っているコードは次のとおりです。
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;
}
}
}
私が得ているコンパイル時エラー: Error 2 Cannot convert type Game.Cards.Deck<Game.Cards.Card>
toGame.Cards.Deck<Game.Cards.FooCard>
そして、新しい演算子を使用して非表示が意図的であることを指定することを示唆する警告。そうすることは慣習に違反しますか?より良い方法はありますか?
stackoverflow に対する私の質問は次のとおりです。私がしようとしていることは、.NET 型システムでエレガントに実行できますか? もしそうなら、いくつかの例を提供できますか?