在C#中使用反射
本文关键字:反射 | 更新日期: 2023-09-27 18:24:52
根据这个答案,我正在尝试复制它并迭代我的CustomerModel属性。
CustomerModel pippo = new CustomerModel();
Type customer = pippo.GetType();
FieldInfo[] fields = customer.GetFields(BindingFlags.Public | BindingFlags.Instance);
使用调试器时,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; }
也许绑定标志不正确?我对反射的使用是新手。
这些是属性,而不是字段。使用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; } }
}
GetFields
调用失败,因为它只查找公共成员。如果您想查看生成的字段,请将代码更改为以下
FieldInfo[] fields = customer.GetFields(BindingFlags.NonPublic | BindingFlags.Instance);