2010-07-15 61 views
0

我想在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

没有测试这一点,但这里是我去:

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; 
      }); 
    } 
0

我的第一个想法就是使用“标签”性质,但后来我意识到,有在APS.NET控制没有标签。但是,有关于标签的回答question

在同一个线程中,有'属性'属性图的解决方案 - 看起来很有前景。