如何修复无法访问的代码dedected警告

时间:2015-09-17 13:26:23

标签: c# .net c#-4.0 dblinq

dbLinq XMlMappingSource.cs包含代码:

    public void ReadEmptyContent(XmlReader r, string name)
    {
        if (r.IsEmptyElement)
            r.ReadStartElement(name, DbmlNamespace);
        else
        {
            r.ReadStartElement(name, DbmlNamespace);
            for (r.MoveToContent(); r.NodeType != XmlNodeType.EndElement; r.MoveToContent())
            {
                if (r.NamespaceURI != DbmlNamespace)
                    r.Skip();
                throw UnexpectedItemError(r);
            }
            r.ReadEndElement();
        }
    }

这会导致编译警告

警告CS0162检测到无法访问的代码

在第

            for (r.MoveToContent(); r.NodeType != XmlNodeType.EndElement; r.MoveToContent())

https://github.com/DbLinq/dblinq2007/blob/d7a05bb452b98fd24bca5693da01ecfecd4f3d40/src/DbLinq/Data/Linq/Mapping/XmlMappingSource.cs#L176

在for子句r.MoveToContent()的第三部分 它看起来像普通的节点遍历代码和for的第三部分。

如何解决这个问题? 使用.NET 4

2 个答案:

答案 0 :(得分:2)

你永远不会执行增量步骤,因为你的第一次循环运行总是抛出异常。

答案 1 :(得分:0)

正如罗林所说,无论如何,你都在抛出异常。

尝试将循环更改为:

for (r.MoveToContent(); r.NodeType != XmlNodeType.EndElement; r.MoveToContent())
            {
                if (r.NamespaceURI != DbmlNamespace)
                    r.Skip();
                else
                    throw UnexpectedItemError(r);
            }

这将解决您的问题。