从void到XmlDocument的隐式转换

时间:2009-11-18 15:39:20

标签: c# xml class properties

可能是一个愚蠢的问题,但我对整个“获取和设定属性” - 编程方式都很陌生;

我在代码的这一部分上一直收到编译错误;

private string _File = "Session.xml";

private XmlDocument XmlDoc
{
    get
    {
        XmlDocument _Doc = new XmlDocument();
        return _Doc.LoadXml(_File);
    }
}

private XmlElement XmlRoot
{
    get
    {
        return XmlDoc.DocumentElement;
    }
}

为什么?我无法向自己解释,因为我甚至没有看到任何隐含的转换......

3 个答案:

答案 0 :(得分:4)

问题在于这一行:

return _Doc.LoadXml(_File);

您尝试从返回类型为void的方法返回值。

请改为尝试:

private XmlDocument XmlDoc
{
    get
    {
        XmlDocument _Doc = new XmlDocument();
        _Doc.LoadXml(_File);
        return _Doc;
    }
}

答案 1 :(得分:2)

_Doc.LoadXml(_File);返回void而不是XmlDocument。将您的代码更改为:

private XmlDocument XmlDoc
{
    get
    {
        XmlDocument _Doc = new XmlDocument();
        _Doc.LoadXml(_File);
        return _Doc;
    }
}

答案 2 :(得分:2)

此代码是您的问题:

return _Doc.LoadXml(_File);

LoadXml方法的返回类型为void,因为该方法不返回任何值,而是从指定的文件路径填充XmlDocument实例。

要解决您的问题,只需将您的媒体资源更改为:

private XmlDocument XmlDoc
{
    get
    {
        XmlDocument _Doc = new XmlDocument();
        _Doc.LoadXml(_File);
        return _Doc;
    }
}