dbLinq XMlMappingSource.cs содержит код:Как исправить недостижимый код dedected предупреждение
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())
в третьей части пункта for r.MoveToContent()
Похоже, что нормальный код обхода узла и третья часть for достигнута.
Как это исправить? Использование .NET 4
'r.ReadEndElement();' недостижимо, потому что вы выбрасываете прямое исключение как 'throw UnexpectedItemError (r);' –
У вас есть два оператора if без фигурных скобок. Те должны всегда быть красным флагом для вас, так как распространенная ошибка - злоупотреблять ими. Я предлагаю всегда использовать фигурные скобки, даже для отдельных операторов в блоке кода. – mason
Кстати, вы можете игнорировать оператор else, поскольку вы всегда выполняете 'r.ReadStartElement (name, DbmlNamespace);' –