Рейтинг:
0
Jochen Arndt
Сообщение об ошибке совершенно ясно. Объект a
не имеет определения для OuterXML
.
Было бы неплохо узнать тип a
соответственно section
Затем документация для этого типа может быть проверена на наличие доступных методов и свойств, а также их синтаксиса.
Если это так то узел XmlNode.Свойство OuterXml (System.Xml)[^]:
SectionTotal.LoadXml(a.OuterXml);
[РЕДАКТИРОВАТЬ]
C# чувствителен к регистру, а VB .Net-нет.
Точнее: компилятор VB проверит, соответствует ли имя регистру без учета регистра, и затем выберет правильное регистрозависимое имя.
Так что ему все равно, если вы используете
OuterXML
или
outerxml
с VB, потому что компилятор решит, что
OuterXml
и используйте его внутренне. Но это не относится к C#, где вы должны использовать точное имя.
[/РЕДАКТИРОВАТЬ]
Primo Chalice
Я все еще не могу решить этот вопрос. Пожалуйста помочь.
foreach (var a в разделе)
{
XmlDocument SectionTotal = новый XmlDocument();
SectionTotal.LoadXml(a.OuterXml);
Это и есть код. Если я напишу, (SectionTotal.OuterXml), он соответствует, а затем показывает ошибку во время выполнения.
Когда я пишу (A.OuterXml), он показывает мне ошибку, упомянутую выше.
a-это объект, а section-XmlNodeList. Как мне действовать дальше?
Jochen Arndt
SectionTotal.OuterXml компилируется, потому что SectionTotal имеет тип XmlDocument, который также имеет свойство OuterXml. Ошибка времени выполнения возникает из-за наличия пустого XmlDocument в этом случае.
Я не знаю, почему он все еще терпит неудачу, когда "раздел" имеет тип XmlNodeList. Вы можете попробовать использовать "ручную" петлю:
for (int i = 0; i < section.Count; i++)
{
XmlDocument SectionTotal = new XmlDocument();
SectionTotal.LoadXml(section[i].OuterXml);
}
Просто для полноты картины:
У вас есть
using System.Xml;
заявление сверху вашего досье?
Primo Chalice
Да, у меня есть System.Xml-да.
Кроме того, когда я использовал ваш данный код, приложение перешло в режим перерыва.
Jochen Arndt
Что вы подразумеваете под "режимом перерыва"?
Он компилируется?
Тогда свойство может быть пустым или нулевым.
Рейтинг:
0
lmoelleb
Измените "var" на фактический тип, который вы ожидаете в коллекции разделов. По-видимому, тип раздела коллекции не позволяет компилятору вывести конкретный тип для использования помимо "объекта".
Primo Chalice
Собственно, это и есть мой вопрос. Он работал в Visual Basic как объект, так что же именно может быть проблемой в C#?
lmoelleb
Трудно сказать, так как вы не предоставляете типы, и, честно говоря, я не очень много знаю о том, как реагирует VB, поскольку я никогда не использовал его. Но, насколько я помню, существует общая разница в философии дизайна в C# и VB. C# - это "никогда не делайте ничего, что явно не входит в намерения разработчика". VB-это "если есть разумный вариант, который, вероятно, будет намерением разработчика, то сделайте это". Подход VB действительно хорош ... до тех пор, пока вы не потратите много времени на отслеживание того, когда он ошибся... тогда вы склоняетесь к ненависти к компьютерам, пытающимся быть умными. :)