Pourquoi ne pas avoir une méthode XElement getAttributeValue?
-
25-09-2019 - |
Question
Parfois, je voudrais savoir le raisonnement de certaines modifications de l'API. Étant donné que Google ne m'a pas aidé à cette question, peut-être peut StackOverflow. Pourquoi Microsoft at-il choisi de supprimer la méthode d'aide de GetAttribute
sur des éléments XML? Dans le monde de System.Xml
il y avait XmlElement.GetAttribute("x")
comme getAttribute
dans MSXML devant elle, tous deux revenir soit la valeur d'attribut ou une chaîne vide lorsque manquant. Avec XElement
il y a SetAttributeValue
mais GetAttributeValue
n'a pas été appliquée.
Certes, ce n'est pas trop de travail pour modifier la logique pour tester et utiliser la propriété XElement.Attribute("x").Value
mais pas aussi pratique et de fournir la fonction d'utilité dans un sens (SetAttributeValue
), mais pas l'autre semble bizarre. Est-ce que quelqu'un sait là les raisons de la décision afin que je puisse reposer facilement et peut-être apprendre quelque chose de lui?
La solution
Vous êtes censé obtenir la valeur d'attribut comme ceci:
var value = (TYPE) element.Attribute("x");
Mise à jour:
Exemples:
var value = (string) element.Attribute("x");
var value = (int) element.Attribute("x");
etc.
Voir cet article: http://www.hanselman.com/blog/ImprovingLINQCodeSmellWithExplicitAndImplicitConversionOperators.aspx . Même chose fonctionne pour les attributs.
Autres conseils
Je ne sais pas exactement la raison, mais avec des méthodes d'extension C #, vous pouvez résoudre le problème vous-même.
public static string GetAttributeValue(this XElement element, XName name)
{
var attribute = element.Attribute(name);
return attribute != null ? attribute.Value : null;
}
Permet:
element.GetAttributeValue("myAttributeName");