Domanda

A volte mi piacerebbe sapere il ragionamento di alcuni cambiamenti API. Dal momento che Google non mi ha aiutato con questa domanda, forse StackOverflow può. Perché Microsoft ha scelto di rimuovere il metodo GetAttribute di supporto su elementi XML? Nel mondo System.Xml c'era XmlElement.GetAttribute("x") come getAttribute in MSXML prima, entrambi i quali restituiscono il valore di attributo o una stringa vuota quando manca. Con XElement c'è SetAttributeValue ma GetAttributeValue non è stata attuata.

Certamente non è troppo lavoro per modificare la logica per testare e utilizzare la proprietà XElement.Attribute("x").Value, ma non è così comodo e fornendo la funzione di utilità in un modo (SetAttributeValue), ma non l'altro sembra strano. C'è qualcuno là fuori conoscono le ragioni dietro la decisione in modo che possa riposare in modo semplice e magari imparare qualcosa da essa?

È stato utile?

Soluzione

Si suppone di ottenere valore di attributo in questo modo:

var value = (TYPE) element.Attribute("x");

UPDATE:

Esempi:

var value = (string) element.Attribute("x");
var value = (int) element.Attribute("x");

ecc.

Si veda questo articolo: http://www.hanselman.com/blog/ImprovingLINQCodeSmellWithExplicitAndImplicitConversionOperators.aspx . Stessa cosa funziona per gli attributi.

Altri suggerimenti

Non sono sicuro esattamente il motivo, ma con C # i metodi di estensione, è possibile risolvere il problema da soli.

public static string GetAttributeValue(this XElement element, XName name)
{
    var attribute = element.Attribute(name);
    return attribute != null ? attribute.Value : null;
}

Permette:

element.GetAttributeValue("myAttributeName");
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top