Pregunta

A veces me gustaría saber el razonamiento de ciertos cambios en la API. Dado que Google no me ha ayudado con esta pregunta, tal vez stackoverflow puede. ¿Por qué Microsoft optar por eliminar el método GetAttribute ayudante de elementos XML? En el mundo System.Xml había XmlElement.GetAttribute("x") como getAttribute en MSXML antes, los cuales devuelven el valor del atributo o una cadena vacía cuando faltan. Con XElement hay SetAttributeValue pero GetAttributeValue no se puso en práctica.

Desde luego, no es demasiado trabajo para modificar la lógica de prueba y utilizar la propiedad XElement.Attribute("x").Value pero no es lo más conveniente y proporcionar la función de utilidad de una manera (SetAttributeValue), pero no el otro parece raro. ¿Hay alguien por ahí sabe las razones detrás de la decisión para que pueda descansar fácilmente y tal vez aprender algo de ella?

¿Fue útil?

Solución

se supone que para obtener el valor del atributo de esta manera:

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

ACTUALIZACIÓN:

Ejemplos:

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

etc.

Vea este artículo: http://www.hanselman.com/blog/ImprovingLINQCodeSmellWithExplicitAndImplicitConversionOperators.aspx . Lo mismo funciona para los atributos.

Otros consejos

No estoy seguro exactamente la razón, pero con C # los métodos de extensión, se puede resolver el problema por sí mismo.

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

Permite:

element.GetAttributeValue("myAttributeName");
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top