首页 > 解决方案 > 使用在另一个类中创建的对象

问题描述

我试图在一个类中使用在另一个类中创建的对象。有没有办法做到这一点?我给你看代码:

在这个名为 Item 的类中,我最后创建了一个名为 spellwand 的对象。

namespace RPG.Entities
{
    public class Item
    {
        public string Name { get; set; }
        public int Damage { get; set; }
        public int MagicalDamage { get; set; }
        public int Defense { get; set; }
        public int Resistance { get; set; }

        public Item(string name, int damage, int magicalDamage, int defense, int resistance)
        {
            Name = name;
            Damage = damage;
            MagicalDamage = magicalDamage;
            Defense = defense;
            Resistance = resistance;
        }

        Item spellwand = new Item("Spellwand", 0, 12, 0, 0);
    }

现在,在这个 Character 类中,我创建了下一个方法:

using RPG.Entities;
using System.Collections.Generic;
using System;

namespace RPG.Entities
{
    public class Character
    {
        public List<Item> Item { get; set; }

        public void AddItem(Item item)
        {
            Item.Add(item);
        }   
    }
}

很酷,现在在 Battle 类中,我想将在 Item 类中创建的对象称为“spellwand”。

namespace RPG.Entities
{
    public class Story
    {
        public void Battle()
        {

            Character eskilie = new Character("Eskilie", "Magician");
            eskilie.AddItem(spellwand);

    }
    }
}

有没有办法做到这一点?

顺便说一句,Battle 中出现的错误是“当前上下文中不存在对象魔法棒”。

标签: c#

解决方案


我认为您需要做的是将 Story 中的项目创建为这样的列表:

namespace RPG.Entities
{
    public class Story
    {
        // Store all your possible game items here
        protected List<Item> GameItems = new List<Item>();

        public Story()
        {
            // Add your game items
            GameItems.Add(new Item("Spellwand", 0, 12, 0, 0));
            GameItems.Add(new Item("Axe", 0, 14, 0, 0));
        }

        public void Battle()
        {

            Character eskilie = new Character("Eskilie", "Magician");

            // Add item
            var spellwand = GameItems.Where(i => i.name == "Spellwand").FirstOrDefault();
            eskilie.AddItem(spellwand)
        }
    }
}

然后从您的 Item 类中删除新项目

public class Item
{
    public string Name { get; set; }
    public int Damage { get; set; }
    public int MagicalDamage { get; set; }
    public int Defense { get; set; }
    public int Resistance { get; set; }

    public Item(string name, int damage, int magicalDamage, int defense, int resistance)
    {
        Name = name;
        Damage = damage;
        MagicalDamage = magicalDamage;
        Defense = defense;
        Resistance = resistance;
    }

}

理想情况下,您应该有一个 ItemRepository 类来检索您的所有游戏项目,但希望这能让您对开始的结构有所了解。


推荐阅读