簡體   English   中英

使用單一方法返回不同類型的數據

[英]Use a single method to return data with different types

我正在為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));
}

我將創建一個名為NodeData的結構。

public struct NodeData
{
    public string value;
    public int valueInt;
    public DateTime date;

    public NodeData(string v, int i, DateTime d) 
    {
        value = v;
        valueInt = i;
        date = d;
    }
}

然后使用方法:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM