java如何获取组合类的属性,如何获取类的属性列表?

您可以使用 Reflection 执行此操作:(从我的库中 - 获取名称和值)

public static Dictionary DictionaryFromType(object atype)

{

if (atype == null) return new Dictionary();

Type t = atype.GetType();

PropertyInfo[] props = t.GetProperties();

Dictionary dict = new Dictionary();

foreach (PropertyInfo prp in props)

{

object value = prp.GetValue(atype, new object[]{});

dict.Add(prp.Name, value);

}

return dict;

}

这个东西不适用于带索引的属性 - 为此(它变得笨拙):

public static Dictionary DictionaryFromType(object atype,

Dictionary indexers)

{

/* replace GetValue() call above with: */

object value = prp.GetValue(atype, ((indexers.ContainsKey(prp.Name)?indexers[prp.Name]:new string[]{});

}

/* replace */

PropertyInfo[] props = t.GetProperties();

/* with */

PropertyInfo[] props = t.GetProperties(BindingFlags.Public)

这也适用于匿名类型!

要获得名称:

public static string[] PropertiesFromType(object atype)

{

if (atype == null) return new string[] {};

Type t = atype.GetType();

PropertyInfo[] props = t.GetProperties();

List propNames = new List();

foreach (PropertyInfo prp in props)

{

propNames.Add(prp.Name);

}

return propNames.ToArray();

}

它只是值,或者你可以使用:

GetDictionaryFromType().Keys

// or

GetDictionaryFromType().Values

但我觉得这有点慢 .

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值