为什么我的反思不起作用?

时间:2015-07-06 15:07:01

标签: c# reflection

我有以下方法,我从用户那里得到一个整数,它用于我制作的基于小文本的游戏,我使用的是OO。

public int getInt(string information)
        {
            int num = 0;

            try
            {
                Console.WriteLine("What is your " + information + "?: ");
                num = int.Parse(Console.ReadLine());
                Console.WriteLine("Your " + information + " is: " + num);
            }
            catch
            {
                Console.WriteLine("Value: '" + num + "' was not a numerical character!");
            }

            setStats(information, num);

            return num;
        }

这可以按预期工作。

但是,我的setStats方法并没有按预期工作。

public void setStats(string nameofStat, int valueofStat)
        {

            PropertyInfo prop = stat.GetType().GetProperty(nameofStat);

            prop.SetValue(nameofStat, valueofStat, null);

            Console.WriteLine(stat.ToString());
        }

我使用反思课程,因为我不想为每个新的统计数据执行此操作。

                if (nameofStat == "Agility")
                {
                   stat.agility = 1;
                }

我得到的错误是"对象引用未设置为对象的实例。"因为我的道具实例是空的,但我不知道为什么它是空的。

就行:

prop.SetValue(nameofStat, valueofStat, null);

请帮忙!

以下是我的一个例子;设置;我的统计类中的属性。

private int Agility;

     public int agility
            {
                get { return Agility; }
                set { Agility = value;}
            }

0 个答案:

没有答案