Property => Value的集合?

时间:2010-07-15 18:54:38

标签: asp.net c#-3.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;
}

2 个答案:

答案 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;
            } );
    }