为什么XElement没有GetAttributeValue方法?

有时我想知道某些API更改的原因。由于谷歌没有帮助我解决这个问题,也许StackOverflow可以。为什么Microsoft选择删除XML元素上的
GetAttribute
辅助方法?在
System.Xml
世界中,之前在MSXML中有
XmlElement.GetAttribute("x")
getAttribute
,它们都会在缺失时返回属性值或空字符串。
XElement
SetAttributeValue
但是
GetAttributeValue
没有实现。 当然,修改逻辑来测试和使用
XElement.Attribute("x").Value
属性并不是太多的工作,但它不是那么方便并且以一种方式提供效用函数(
SetAttributeValue
)而不是另一种似乎很奇怪。有没有人知道决定背后的原因,以便我可以轻松地休息,也许从中学到一些东西?     
已邀请:
你应该得到这样的属性值:
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。同样适用于属性。     
不确定原因,但使用C#扩展方法,您可以自己解决问题。
public static string GetAttributeValue(this XElement element, XName name)
{
    var attribute = element.Attribute(name);
    return attribute != null ? attribute.Value : null;
}
允许:
element.GetAttributeValue("myAttributeName");
    

要回复问题请先登录注册