私は弾丸を持っています:
public LaserBullets : Projectile
私は、派生した銃と一緒に行く弾丸タイプの基本武器から継承する銃を持っています:
public LaserWeapon : Weapon<LaserBullets>
プレイヤーの現在の武器を確立するためのプロパティがあります。
public Weapon<Projectile> CurrentWeapon
{
set { currentWeapon = value; }
}
これは失敗します(暗黙的ににキャストLaserWeapon
することはできませんWeapon<Projectile>
)
player.CurrentWeapon = new LaserWeapon();
C#での特定の共分散のサポートがないことについて読んだことがありますが、ここで立ち往生しているとは思わないでください。私の状況を機能させる方法はありますか?プレイヤークラスで基本武器を維持しようとしていますが、別のクラスでより具体的な武器を使用しています。
LaserWeapon用に独自のキャスト演算子を作成しようとしましたが、基本クラスとの間でキャストできないというエラーが発生しました。