编辑:我找到了错误的来源。我调用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未处理
输入字符串的格式不正确。
有人可以向我解释我做错了什么,并给出解释性修复(如果可能的话)?
答案 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));
}
}