Класс ExpandoObject, добавляемый в .NET 4, позволяет произвольно устанавливать свойства объекта во время выполнения.
Есть ли в этом какие-то преимущества по сравнению с использованием Dictionary<string, object>
или даже Hashtable? Насколько я могу судить, это не что иное, как хеш-таблица, к которой вы можете получить доступ с немного более лаконичным синтаксисом.
Например, почему это так:
dynamic obj = new ExpandoObject();
obj.MyInt = 3;
obj.MyString = "Foo";
Console.WriteLine(obj.MyString);
Действительно лучше или существенно отличается, чем:
var obj = new Dictionary<string, object>();
obj["MyInt"] = 3;
obj["MyString"] = "Foo";
Console.WriteLine(obj["MyString"]);
Какие реальные преимущества можно получить, используя ExpandoObject вместо использования произвольного типа словаря, если не очевидно, что вы используете тип, который будет определен во время выполнения.