C# 访问循环中类似的命名属性
我有一个.Net对象(在C#中),它的属性名为event1、event2等等 我必须对每一个都做一些if-else。有没有办法让我把这些绕过去。如果这些是控件,我可以使用控件集合,但这些是对象的属性C# 访问循环中类似的命名属性,c#,.net,C#,.net,我有一个.Net对象(在C#中),它的属性名为event1、event2等等 我必须对每一个都做一些if-else。有没有办法让我把这些绕过去。如果这些是控件,我可以使用控件集合,但这些是对象的属性 有什么帮助吗?手动写出来可能是最清楚的。 然而,使用反射是可能的。手动写出可能是最清晰的。 但是,也可以使用反射。是的,您可以使用获取PropertyInfo对象,查询名称并获取所需的数据。是的,您可以使用获取PropertyInfo对象,查询名称并获取所需的数据。使用是您的最佳选择,但对于您所需的
有什么帮助吗?手动写出来可能是最清楚的。
然而,使用反射是可能的。手动写出可能是最清晰的。 但是,也可以使用反射。是的,您可以使用获取PropertyInfo对象,查询名称并获取所需的数据。是的,您可以使用获取PropertyInfo对象,查询名称并获取所需的数据。使用是您的最佳选择,但对于您所需的内容来说,这可能有些过分。以下代码段摘自msdn:
foreach (MemberInfo mi in t.GetMembers() )
{
// If the member is a property, display information about the
// property's accessor methods.
if (mi.MemberType==MemberTypes.Property)
{
PropertyInfo pmi = ((PropertyInfo) mi);
foreach ( MethodInfo am in pmi.GetAccessors() )
{
Display(indent+1, "Accessor method: {0}", am);
}
}
}
使用是你最好的选择,但对于你所需要的东西来说,这可能是过分的。以下代码段摘自msdn:
foreach (MemberInfo mi in t.GetMembers() )
{
// If the member is a property, display information about the
// property's accessor methods.
if (mi.MemberType==MemberTypes.Property)
{
PropertyInfo pmi = ((PropertyInfo) mi);
foreach ( MethodInfo am in pmi.GetAccessors() )
{
Display(indent+1, "Accessor method: {0}", am);
}
}
}
假设你知道你要处理多少财产
for(int eventIndex = 0; eventIndex < NUM_EVENTS; eventIndex++)
{
PropertyInfo eventPropertyInfo =
this.GetType().GetProperty("Event" + eventIndex);
if (eventPropertyInfo.GetValue(this, null) == yourValue)
{
//Do Something here
}
}
for(int-eventIndex=0;eventIndex
假设您知道要处理多少属性
for(int eventIndex = 0; eventIndex < NUM_EVENTS; eventIndex++)
{
PropertyInfo eventPropertyInfo =
this.GetType().GetProperty("Event" + eventIndex);
if (eventPropertyInfo.GetValue(this, null) == yourValue)
{
//Do Something here
}
}
for(int-eventIndex=0;eventIndex
你这样做的理由是什么?是为了加快发展吗?您可以按照许多人的建议使用反射,但是现在直接引用属性而不是在运行时承担性能损失会更加有效。您这样做的理由是什么?是为了加快发展吗?您可以按照许多人的建议使用反射,但现在直接引用属性而不是在运行时承担性能损失会更加有效。反射是一个简单的解决方案,但它可能会很慢,具体取决于您的应用程序使用情况
如果反射很慢,您可以通过代码来加速它。这不是最容易做的事情,但最终结果与手动编写每一行一样。维护这样的代码也很困难。反射是一个简单的解决方案,但根据应用程序的使用情况,它可能会很慢 如果反射很慢,您可以通过代码来加速它。这不是最容易做的事情,但最终结果与手动编写每一行一样。维护这样的代码也很困难