13

有时我想知道某些 API 更改的原因。由于谷歌没有帮助我解决这个问题,也许 StackOverflow 可以。为什么微软选择移除GetAttributeXML 元素上的辅助方法?在System.Xml世界上,XmlElement.GetAttribute("x")就像getAttribute之前的 MSXML 一样,两者都在丢失时返回属性值或空字符串。有XElementSetAttributeValue没有GetAttributeValue实施。

当然,修改逻辑以测试和使用该属性并没有太多工作,XElement.Attribute("x").Value但它并不方便,并且以一种方式提供实用程序功能(SetAttributeValue)但不是另一种方式似乎很奇怪。有没有人知道这个决定背后的原因,以便我可以轻松休息并从中学到一些东西?

4

2 回答 2

16

你应该得到这样的属性值:

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

更新:

例子:

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

等等

请参阅这篇文章:http ://www.hanselman.com/blog/ImprovingLINQCodeSmellWithExplicitAndImplicitConversionOperators.aspx 。同样的事情适用于属性。

于 2010-08-04T23:26:13.707 回答
5

不确定原因,但使用 C# 扩展方法,您可以自己解决问题。

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

允许:

element.GetAttributeValue("myAttributeName");
于 2010-08-04T23:24:51.867 回答