Pergunta

Às vezes eu gostaria de saber o raciocínio de certas mudanças na API. Como o Google não me ajudou com essa pergunta, talvez o Stackoverflow possa. Por que a Microsoft escolheu remover o GetAttribute Método auxiliar em elementos XML? No System.Xml mundo havia XmlElement.GetAttribute("x") Curti getAttribute No msxml antes dele, os quais retornam o valor do atributo ou uma string vazia ao ausente. Com XElementSetAttributeValue mas GetAttributeValue não foi implementado.

Certamente não é muito trabalho para modificar a lógica para testar e usar o XElement.Attribute("x").Value propriedade, mas não é tão conveniente e fornece a função de utilidade de uma maneira (SetAttributeValue) Mas não o outro parece estranho. Alguém lá fora sabe as razões por trás da decisão para que eu possa descansar facilmente e talvez aprender algo com ela?

Foi útil?

Solução

Você deveria obter valor de atributo como este:

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

ATUALIZAR:

Exemplos:

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

etc.

Veja este artigo: http://www.hanselman.com/blog/improvinglinqcodesmellwithExplicitandimplicticConverSionOperators.aspx. A mesma coisa funciona para atributos.

Outras dicas

Não tenho certeza exatamente do motivo, mas com os métodos de extensão C#, você pode resolver o problema sozinho.

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 em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top