簡體   English   中英

““ System.Dynamic.ExpandoObject”不包含“ PropertyName”的定義

[英]“'System.Dynamic.ExpandoObject' does not contain a definition for ”PropertyName"

我有以下代碼可從XML文件生成動態對象:

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>abc@xyz.com</email>
            <email>def@xyz.com</email>
            <email>ghi@xyz.com</email>
        </emails>
        <timezone>Mountain Standard Time</timezone>
    </client>
</clients>

該代碼工作正常,但我總是在IntelliTrace中看到以下異常(多次):

異常:拋出:“'System.Dynamic.ExpandoObject'不包含'客戶端'的定義”。(Microsoft.CSharp.RuntimeBinder.RuntimeBinderException)拋出了Microsoft.CSharp.RuntimeBinder.RuntimeBinderException:不包含“客戶”的定義”

我的代碼有什么問題嗎?

我收集使用ExpandoObject時的預期行為。 我查看了此代碼的IntelliTrace日志,並將看到的異常條目配對:

  • 異常: 拋出 :“'System.Dynamic.ExpandoObject'不包含'客戶端'的定義”(Microsoft.CSharp.RuntimeBinder.RuntimeBinderException)
  • 異常: 捕獲 :“'System.Dynamic.ExpandoObject'不包含'客戶端'的定義”(Microsoft.CSharp.RuntimeBinder.RuntimeBinderException)

即,異常被引發然后被捕獲。 如果您查看“調用堆棧”窗口,您將看到在.NET Framework中引發了異常。

順便說一句,我也不得不做出一個小的改變了代碼,使其運行:我改變: root.clients.client.Countroot.clients.Countfor循環。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM