1

以下代码(在 StackOverflow 上找到)有效:

object ob = new { Name = "Erwin Okken", Age = 23, Position = new Point(2, 5) };
Type type = ob.GetType();
PropertyInfo pr = type.GetProperty("Name");
string value = pr.GetValue(ob, null).ToString(); // Erwin Okken

但是,如果我使用自己的课程,它就不起作用:

public class Subject
{
    public string Name;
    public int Age;
    public Point Position;

    public string Stringtest;
    public int IntTest;

    public Subject()
    {

    }
}

Type type = ob.GetType();
PropertyInfo pr = type.GetProperty("Name"); // null
string value = pr.GetValue(ob, null).ToString();

我尝试了所有 Bindingflags,但变量“pr”保持为空。有人有想法吗?

4

1 回答 1

2

你有这个:

public class Subject
{
    public string Name;
    ...
}

在您的类型定义Name中是字段而不是属性,您必须将类型更改为:

public class Subject
{
    public string Name { get; set; }
    ...
}

或者,如果您想保持Name字段(坏主意),您可以使用:

FieldInfo pr = type.GetField("Name");
于 2013-10-16T10:11:41.637 回答