假设我有很多对象,并且它们有很多字符串属性。
是否有一种编程方式来遍历它们并输出属性名称及其值,或者是否必须进行硬编码?
是否有一种 LINQ 方法来查询“字符串”类型的对象属性并输出它们?
您是否必须对要回显的属性名称进行硬编码?
使用反射。它远不如硬编码的属性访问那么快,但它可以满足您的需求。
以下查询为对象“myObject”中的每个字符串类型属性生成一个具有 Name 和 Value 属性的匿名类型:
var stringPropertyNamesAndValues = myObject.GetType()
.GetProperties()
.Where(pi => pi.PropertyType == typeof(string) && pi.GetGetMethod() != null)
.Select(pi => new
{
Name = pi.Name,
Value = pi.GetGetMethod().Invoke(myObject, null)
});
Usage:
foreach (var pair in stringPropertyNamesAndValues)
{
Console.WriteLine("Name: {0}", pair.Name);
Console.WriteLine("Value: {0}", pair.Value);
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)