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?

Était-ce utile?

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");
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top