Новый программист, используя C# и VB 2015, первый пост, поэтому, пожалуйста, будьте нежны!Доступ к методам дочернего объекта через словарь
В основном я использую словарь в первый раз, и я пытаюсь получить доступ к методу useMedPack(), который находится внутри моего класса MedPack, который является дочерним элементом Item, который создается при добавлении его в словарь. Проблема в том, что он говорит:
**** EDIT **** Мне кажется, что я должен был добавить класс Item в первый раз (теперь добавлен снизу). После некоторых замечательных предложений, я бросил использование инвентаря ((MedPack) [«MedPack»]). UseMedPack(); и теперь он работает по назначению! Хотя некоторые отзывы были замечательными, и я многому научился от всяких предложений! :)
«Пункт» не содержит определения useMedPack() ;.
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
Dictionary<String, Item> inventory = new Dictionary<String, Item>();
inventory.Add("MedPack", new MedPack("MedPack", 1));
MedPack.pickUpMedPack(inventory);
//THIS IS THE PROBLEM inventory["MedPack"].useMedPack();
Console.WriteLine("Press any key to exit");
Console.ReadKey();
}
}
}
namespace ConsoleApplication1
{
class MedPack : Item
{
private int healthReturn = 10;
public MedPack() : base()
{
}
public MedPack(String itemName, int itemQuantity) : base(itemName, itemQuantity)
{
}
public void useMedPack()
{
decreaseQuantity(1);
}
public static void pickUpMedPack(Dictionary<String, Item> inventory)
{
if (!inventory.ContainsKey("MedPack"))
{
inventory.Add("MedPack", new MedPack("MedPack", 1));
Console.WriteLine("You found a MedPack! It was added to the inventory");
}
else
{
inventory["MedPack"].increaseQuantity(1);
Console.WriteLine("You found ANOTHER MedPack! It was added to the inventory");
}
}
}
}
имен ConsoleApplication1 { класс Item {
private String itemName;
private int itemQuantity;
public Item(String itemName, int itemQuantity)
{
this.itemName = itemName;
this.itemQuantity = itemQuantity;
}
public Item()
{
}
public void increaseQuantity(int increaseQuantity)
{
this.itemQuantity += increaseQuantity;
}
public void decreaseQuantity(int increaseQuantity)
{
this.itemQuantity -= increaseQuantity;
}
public String getName()
{
return this.itemName;
}
public void setName(String name)
{
this.itemName = name;
}
public int getQuantity()
{
return this.itemQuantity;
}
public void setQuantity(int x)
{
this.itemQuantity = x;
}
}
}
является useMedPack членом товара? –
Почему ваш словарь не из словаря? –
Вы пробовали кастинг? – Joekomino