前几天遇到问题时,我正在尝试使用 Type.GetMethod 方法。
我的程序是一个 Windows 应用程序。表单中有一个文本框用于输出,而 Form1_Load 方法中只有这两个代码块:
MethodInfo info2 = typeof(IEnumerable<int>).GetMethod("GetEnumerator");
textBox1.Text += info2.ToString();
MethodInfo info1 = typeof(IEnumerator<int>).GetMethod("MoveNext");
textBox1.Text += info1.ToString();
第一个 GetMethod 返回了正确的信息,但第二个没有返回任何信息。
所以我更进一步,在代码中包含了一个 try/catch 语句:
try
{
MethodInfo info2 = typeof(IEnumerable<int>).GetMethod("GetEnumerator");
textBox1.Text += info2.ToString();
MethodInfo info1 = typeof(IEnumerator<int>).GetMethod("MoveNext");
textBox1.Text += info1.ToString();
}
catch (Exception v)
{
textBox1.Text += v.Message;
}
第二个 GetMethod 现在给了我错误:
Object reference not set to an instance of an object.
我很困惑。这两种方法都不是静态的,也没有任何参数。为什么 MoveNext 会返回错误,而 GetEnumerator 不会?