¿Por qué no tener un método XElement GetAttributeValue?
-
25-09-2019 - |
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?
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");