【发布时间】:2010-10-24 19:20:43
【问题描述】:
我有一个 C# 类,我想将属性作为键/值对循环,但不知道如何。
这是我想做的:
Foreach (classobjectproperty prop in classobjectname)
{
if (prop.name == "somename")
//do something cool with prop.value
}
【问题讨论】:
标签: c#
我有一个 C# 类,我想将属性作为键/值对循环,但不知道如何。
这是我想做的:
Foreach (classobjectproperty prop in classobjectname)
{
if (prop.name == "somename")
//do something cool with prop.value
}
【问题讨论】:
标签: c#
是的:
Type type = typeof(Form); // Or use Type.GetType, etc
foreach (PropertyInfo property in type.GetProperties())
{
// Do stuff with property
}
这不会将它们作为键/值对提供,但您可以从 PropertyInfo 获取各种信息。
请注意,这只会提供公共属性。对于非公开的,您可能希望使用采用BindingFlags 的重载。如果您真的只想要特定实例的实例属性的名称/值对,您可以执行以下操作:
var query = foo.GetType()
.GetProperties(BindingFlags.Public |
BindingFlags.Instance)
// Ignore indexers for simplicity
.Where(prop => !prop.GetIndexParameters().Any())
.Select(prop => new { Name = prop.Name,
Value = prop.GetValue(foo, null) });
foreach (var pair in query)
{
Console.WriteLine("{0} = {1}", pair.Name, pair.Value);
}
【讨论】:
查看here 的解决方案 - 尽管这仅限于公共财产,但该方法应该适合您获得所有这些。
【讨论】: