我创建了一个从特定节点返回字符串值的简单方法(如果它不存在则返回null)。
private static string getValueIfExist(XElement element, string nodeName)
{
return element.Elements(nodeName).Any() ? element.Elements(nodeName).First().Value : null;
}
现在我想将该方法用作XElement的扩展方法:
public static string GetValueIfExist(this XElement element, string nodeName)
{
return element.Elements(nodeName).Any() ? element.Elements(nodeName).First().Value : null;
}
但它没有编译。由于某种原因,Any()和First()都不再被视为IEnumerable的一部分。我究竟做错了什么?有没有其他方法来获得这种特定的扩展方法?
答案 0 :(得分:1)
解决方案结果非常简单...... Jens Kloster走在正确的轨道上。我忘了在我的Extensions类中包含System.Linq
命名空间。我第一次检查包含并看到System.Xml.Linq
包含在内,我认为这就是我所需要的。但现在我意识到我需要两个命名空间。
我还注意到Visual Studio 2012没有提出一个" Resolve"右键单击Any()时,此特定情况的菜单项。
答案 1 :(得分:0)
您还需要制作课程static
。
public static class Extensions
{
public static string GetValueIfExist(this XElement element, string nodeName)
{
...
}
}