0
は誰かが確認できたジェネリック型の使用状況:私の下のアプローチが正しいか、より良い代替手段があるかどうか
Tiger : Animal<Claw>
{
protected override void UseWeapon(Claw claw)
{
// logic here
}
protected override void GetWeapon()
{
// logic here to populate props & return Claw();
}
}
:例えばのために
Tiger : Animal<Claw>
Hyena : Animal<Teeth>
Eagle : Animal<Beak>
:私のような実装を持つことができるように
// An interface
IAnimal
{
pubilc void Hunt();
}
// An abstract class
Animal<T> : IAnimal
{
public void Hunt()
{
UseWeapon(T);
}
protected abstract T GetWeapon();
protected abstract void UseWeapon(T weapon);
}
を
私は電話することができます:
IAnimal animal = GetRandomAnimal(); // OR GetTiger();
animal.Hunt()
'Claws'と' Teeth'を武器に使う 'Bear'を実装する必要がある場合はどうなりますか? –
このコードは機能しません。 'public void Hunt(){UseWeapon(T);) } ' –
ええ、私は@DmitryBychenkoに同意するだろう、それはむしろ動物ごとに利用可能なオプションを制限するようだ – Icepickle