J'ai un System.Collections.Generic.Dictionary<System.Web.UI.Control, object>
où toutes les clés peuvent être de type System.Web.UI.WebControls.HyperLink
ou System.Web.UI.WebControls.Label
.Où() avec Replace() dans Dictionary.Where (p => p.Key est T)
Je veux changer Text
propriété de chaque contrôle. Parce que HyperLink ne met pas en œuvre (pourquoi ?!) ITextControl
, je dois jeter l'étiquette ou HyperLink explicitement:
Dictionary<Control,object> dic = ..
dic
.Where(p => p.Key is HyperLink)
.ForEach(c => ((HyperLink)c).Text = "something")
dic
.Where(p => p.Key is Label)
.ForEach(c => ((Label)c).Text = "something")
Y at-il des façons de contourner cette approche?
Est-ce vraiment un problème, cependant? –
@Isaac Cambron: Il itère la collection deux fois et effectue beaucoup de vérifications de type, donc je dirais que c'est un peu moche. Mon vote porte sur la solution de @Stefan Egli. – dtb