私はアイテムの簡単な「在庫」を作成しようとしています。これはどんなRPGにもよく似ています。私は非常に基本的なのクラスを持っている、プロパティを持っています。C#List <baseClass> - 継承されたクラスを格納する方法もありますか?
とにかく、私はitem
の基底クラスを持ち、それを継承するのはweapon
です。 item
には、weapon
でも使用されているプロパティ(名前、値、重量、重要なアイテム)がありますが、weapon
には追加のプロパティ(攻撃、防御、速度、利き手)があります。
(可読性が恐ろしいの場合は申し訳ありません)私は、次のコードを持っている:
static void Main(string[] args)
{
List<item> inventory = new List<item>();
inventory.Add(new weapon("Souleater", 4000, 25.50f, false, 75, 30, 1.25f, 2));
//item---------------------------> weapon--------->
Console.Write("Name: {0}\nValue: {1}\nWeight: {2}\nDiscardable: {3}\nAttack: {4}\nDefense: {5}\nSpeed: {6}\nHandedness: {7}",
inventory[0].Name, inventory[0].BValue, inventory[0].Weight, inventory[0].Discard,
inventory[0].Atk, inventory[0].Def, inventory[0].Speed, inventory[0].Hands);
Console.ReadLine();
}
は基本的に、私がやろうとしていることはインベントリに新しいweapon
を追加しているが、在庫はAですList<item>
タイプ。私はそれが継承のために受け入れられることを望んで、気まぐれに出かけました。それはあったが、weapon
に固有のプロパティにアクセスすることができない。
( 'shopSystem.itemが「攻撃力」タイプの最初の引数を受け入れる「攻撃力」の定義とのない拡張メソッドが含まれていません'shopSystem.item'が見つかりました)
ここで私がここで意図していたことを達成する方法はありますか? item
オブジェクトを格納できる "目録"と、を継承するweapon
、armour
、accessory
などのオブジェクトがありますか?私が次のことを宣言した場合、私は、所望の特性のすべてにアクセスできることも言及する価値がある:読書のための
weapon Foo = new weapon("Sword", 200, 20.00f, false, 30, 20, 1.10f, 1);
感謝します。誰もが興味を持っている場合はここ
は、item
とweapon
クラスです:
私は '(weapon)inventory [0] .Atk'を使っても、同じエラーメッセージが表示されます。 – Deadrust
((武器)の目録[0])を使用してみてください。代わりに –
アーク、それが動作します!ありがとう! – Deadrust