У меня есть следующий код, который генерирует динамический объект из XML-файла:« 'System.Dynamic.ExpandoObject' не содержит определения для "PropertyName"
C#
private static List<dynamic> GetClientObject()
{
var xDoc = XDocument.Load(new StreamReader(xmlPath + @"\client.xml"));
dynamic root = new ExpandoObject();
XmlToDynamic.Parse(root, xDoc.Elements().First());
List<dynamic> clients = new List<dynamic>();
for (int i = 0; i < root.clients.client.Count; i++)
{
clients.Add(new ExpandoObject());
clients[i].Id = root.clients.client[i].id;
clients[i].Name = root.clients.client[i].name;
List<string> list = new List<string>();
for (int j = 0; j < root.clients.client[i].emails.email.Count; j++)
{
list.Add(root.clients.client[i].emails.email[j].ToString());
}
clients[i].Email = string.Join(",", list);
}
return clients;
}
XML
<clients>
<client>
<id>SomeId</id>
<name>SomeName</name>
<emails>
<email>[email protected]</email>
<email>[email protected]</email>
<email>[email protected]</email>
</emails>
<timezone>Mountain Standard Time</timezone>
</client>
</clients>
Код работает нормально, но я всегда вижу следующее исключение (несколько раз) в IntelliT раса:
Исключение: Метательное: "System.Dynamic.ExpandoObject" не содержит определение 'клиент'" (Microsoft.CSharp.RuntimeBinder.RuntimeBinderException) A Microsoft.CSharp.RuntimeBinder.RuntimeBinderException был брошен: «„System.Dynamic.ExpandoObject“не содержит определения для „клиент“»
есть все, что случилось с моим кодом?
Похоже, что условие цикла должно быть root.clients.Count, а не root.clients.client.Count – alex
Проверьте обновленный формат XML. – Learner
Без (куска) XML невозможно определить, имеет ли смысл 'root.clients.client.Count'. Кроме того, остальная часть stacktrace относится к строке вашего собственного кода? –