使用“Reflection”从另一个类获取int是行不通的

时间:2013-08-21 02:55:21

标签: c# reflection int

编辑:我找到了错误的来源。我调用classTwo()type字符串指向字符串,而不是整数。

所以我试图使用Reflection从另一个类中获取一个int。

当我从另一个类中获取字符串时它会起作用,但是当我尝试获取一个int时却不行。

这是我的代码:

class classOne //In its own file (classOne.cs)
{
    public int myInt = 5;
    public string myString = "Hello World";
    new classTwo(this, "myInt").show(); //classTwo is actually a form.
}

class classTwo //In its own file (classTwo.cs)
{
    classOne frm;
    int kind1;
    string kind2;
    string type;

    public classTwo(classOne frm, string type)
    {
        this.frm = frm;
        this.type = type;
    }
    //Doesn't work:
    this.kind1 = Convert.ToInt32(this.frm.GetType().GetField(this.type).GetValue(this.frm));
    //Works:
    this.kind2 = Convert.ToString(this.frm.GetType().GetField("myString").GetValue(this.frm));
}

这不起作用。它在我使用Convert.ToString时有效,但是当我使用它时,它会在我运行它时抛出错误:


FormatException未处理

输入字符串的格式不正确。


有人可以向我解释我做错了什么,并给出解释性修复(如果可能的话)?

1 个答案:

答案 0 :(得分:0)

完美运作

class classOne //In its own file (classOne.cs)
{
    public int myInt = 5;
    public string myString = "Hello World";

    public void test()
    {
        var obj = new classTwo(this, "myInt");
        obj.test();

    }

}

class classTwo //In its own file (classTwo.cs)
{
    classOne frm;
    int kind1;
    string kind2;
    string type;

    public classTwo(classOne frm, string type)
    {
        this.frm = frm;
        this.type = type;
    }
    //Doesn't work:

    public void test()
    {
        //Doesn't work:
        this.kind1 = Convert.ToInt32(this.frm.GetType().GetField(this.type).GetValue(this.frm));


        this.kind2 = Convert.ToString(this.frm.GetType().GetField("myString").GetValue(this.frm));
    }
}