Joh*_*win 13 c# linq xelement system.xml
有时我想知道某些API更改的原因.由于谷歌没有帮助我解决这个问题,也许StackOverflow可以.为什么Microsoft选择删除GetAttributeXML元素上的辅助方法?在System.Xml世界上有XmlElement.GetAttribute("x")类似于getAttribute之前的MSXML,它们都会在缺失时返回属性值或空字符串.随着XElement有SetAttributeValue,但GetAttributeValue没有实现.
当然,修改逻辑来测试和使用XElement.Attribute("x").Value属性并不是太多的工作,但它不是那么方便,并且提供实用功能的一种方式(SetAttributeValue)而不是另一种似乎很奇怪.有没有人知道决定背后的原因,以便我可以轻松地休息,也许从中学到一些东西?
Nec*_*ros 16
你应该得到这样的属性值:
var value = (TYPE) element.Attribute("x");
Run Code Online (Sandbox Code Playgroud)
更新:
例子:
var value = (string) element.Attribute("x");
var value = (int) element.Attribute("x");
Run Code Online (Sandbox Code Playgroud)
等等
请参阅此文章: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;
}
Run Code Online (Sandbox Code Playgroud)
允许:
element.GetAttributeValue("myAttributeName");
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9877 次 |
| 最近记录: |