在C#中使用反射

Sat*_*nix 0 c# reflection

这个答案之后,我正在尝试复制它并迭代我的CustomerModel属性.

CustomerModel pippo = new CustomerModel();
Type customer = pippo.GetType();
FieldInfo[] fields = customer.GetFields(BindingFlags.Public | BindingFlags.Instance);
Run Code Online (Sandbox Code Playgroud)

使用调试器时,fields总是有一个count = 0但是CustomerModel有许多我希望在字段中看到的公共属性.我怎样才能做到这一点?这是我想要看到的一些属性的摘录.

    [DataMember]
    public String Id { get; set; }

    [DataMember]
    public String LoginName { get; set; }

    [DataMember]
    public String Password { get; set; }

    [DataMember]
    public String CreationDate { get; set; }
Run Code Online (Sandbox Code Playgroud)

也许绑定标志不正确?我是新手使用反射.

Joe*_*nos 6

这些是属性,而不是字段.用GetProperties而不是GetFields.

在C#中:

public class Foo {

    // this is a field:
    private string _name;

    // this is a property:
    public string Name { get; set; }

    // this is also a property:
    public string SomethingElse { get { return _name; } set { _name = value; } }

}
Run Code Online (Sandbox Code Playgroud)