C#4.0 Dynamic vs Expando…他们在哪里适合?

我正在尝试学习C#4.0附带的所有新东西。我无法理解
DynamicObject
ExpandoObject
类型之间的差异。似乎使用了
DynamicObject
,例如当你想用Python脚本访问变量时和
ExpandoObject
与COM / Office对象交谈时。我对吗?它们的用途有何不同?     
已邀请:
Expando是一种
dynamic
类型,可以在运行时添加(或删除)成员。
dynamic
旨在允许.NET在与动态类型语言(如Python和JavaScript)连接时与类型进行互操作。 因此,如果您需要处理动态类型:使用
dynamic
并且如果您需要处理动态数据(如XML或JSON):使用ExpandoObject expando的声明显示了dynamic和expando之间的关系:
dynamic expando = new ExpandoObject();
并且能够添加新属性:
expando.SomeNewStringVal = "Hello World!";
最后一行代码在expando对象中创建一个名为
SomeNewStringVal
的全新字符串属性。字符串类型是从赋值中推断出来的。 因此,expando是一种动态数据类型,可以表示动态变化的数据。简而言之就是这样。这是对动态和expando的深入了解。 完整的例子:
using System;
using System.Dynamic;

class Program
{
    static void Main(string[] args)
    {
        dynamic expando = new ExpandoObject();
        expando.SomeNewStringVal = "Hello Brave New Whirrled!";
        Console.WriteLine(expando.SomeNewStringVal);

        // more expando coolness/weirdness:
        var p = expando as IDictionary<String, object>;
        p["A"] = "New val 1";
        p["B"] = "New val 2";

        Console.WriteLine(expando.A);
        Console.WriteLine(expando.B);
    }
}
    

要回复问题请先登录注册