我正在为XPathNavigator支持的每种类型使用ValueAs方法。

public string GetFromNodeAsString(string xpathOfNode)
{
    XPathNavigator nodeNav = ipFormNav.SelectSingleNode(xpathOfNode, nsManager);
    return nodeNav.Value;
}

public int GetFromNodeAsInt(string xpathOfNode)
{
    XPathNavigator nodeNav = ipFormNav.SelectSingleNode(xpathOfNode, nsManager);
    return nodeNav.ValueAsInt;
}

public DateTime GetFromNodeAsDateTime(string xpathOfNode)
{
    XPathNavigator nodeNav = ipFormNav.SelectSingleNode(xpathOfNode, nsManager);
    return nodeNav.ValueAsDateTime;
}


变化的两件事是返回类型和返回的内容。
结合这些方法的最佳方法是什么?有没有更好的办法?我已经尝试过使用动态返回类型并传递相应的数据类型,但是并没有结合在一起。

最佳答案

大概是这样吗?

public T GetFromNode<T>(string xpathOfNode)
{
    XPathNavigator nodeNav = ipFormNav.SelectSingleNode(xpathOfNode, nsManager);
    return (T)nodeNav.ValueAs(typeof(T));
}

10-08 02:15