我想在C#中创建一个键值对的集合,其中键是ASP.net控件的属性(例如ID),值是该属性的值。我想这样做,所以我可能稍后遍历集合,看看给定的控件是否具有我的集合中的属性(并且控件中的属性值与我的集合中定义的值匹配)。有关最佳方法的建议吗?谢谢你的帮助。
伪代码示例:
Properties[] = new Properties[] {new Property(){name="ID",value="TestControl1"}, new Property(){name = "Text",value="Type text here"}}
private bool controlContainsProperties(Control control){
foreach(Property Property in Properties[])
{
if((control does not contain property) || (control property value != Property.Value))
return false;
}
return true;
}
答案 0 :(得分:0)
我的第一个想法是使用'tag'属性,但后来我意识到APS.NET控件中没有标签。但是,有关于代码的回复question。
在同一个主题中,有一个带有'Attributes'属性映射的解决方案 - 看起来很有希望。
答案 1 :(得分:0)
没有对此进行测试,但这是我的去处:
public bool HasProperty( object target, IDictionary<string, object> values )
{
var targetType = target.GetType();
return values.All( kvp =>
{
var property = targetType.GetProperty( kvp.Key );
if ( property != null )
{
var value = property.GetValue( target, null );
if ( value != null )
return value.Equals( kvp.Value );
}
return false;
} );
}