2010-07-15 5 views
0

Je voudrais créer une collection de paires valeur/clé en C# où la clé est une propriété d'un contrôle ASP.net (par exemple ID) et la valeur est la valeur de cette propriété. Je voudrais faire ceci afin que je puisse parcourir plus tard la collection et voir si un contrôle donné a les propriétés dans ma collection (et les valeurs des propriétés dans le contrôle correspondent aux valeurs définies dans ma collection). Des suggestions quant à la meilleure façon de le faire? Merci pour toute aide.Collection de propriété => Valeur?

exemple pseudo-code:

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

Répondre

0

n'a pas testé, mais voici mon go:

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

Ma première idée était dans l'utilisation de la propriété « tag », mais je me suis rendu qu'il n'y a pas de balises dans les contrôles de APS.NET. Cependant, il y a une réponse question sur les étiquettes.

Dans le même thread, il existe une solution avec la carte de propriétés 'Attributs' - semble prometteuse.

Questions connexes