Создание анонимного типа динамически?

Я хочу создать анонимный тип, который я могу установить имя свойства динамически. это не обязательно должен быть анонимный тип. Все, чего я хочу добиться, это динамически устанавливать любые имена свойств объектов. Это может быть ExpandoObject, но словарь у меня не подойдет.

Каковы ваши предложения?

Ответ 1

Только ExpandoObject может иметь динамические свойства.

Edit: Ниже приведен пример использования Expand Object (из его описания MSDN):

dynamic sampleObject = new ExpandoObject();
sampleObject.TestProperty = "Dynamic Property"; // Setting dynamic property.
Console.WriteLine(sampleObject.TestProperty );
Console.WriteLine(sampleObject.TestProperty .GetType());
// This code example produces the following output:
// Dynamic Property
// System.String

dynamic test = new ExpandoObject();
((IDictionary<string, object>)test).Add("DynamicProperty", 5);
Console.WriteLine(test.DynamicProperty);

Ответ 2

Вы можете вставить ExpandoObject в словарь и заполнить его таким образом, а затем установленные вами ключи будут отображаться как имена свойств в ExpandoObject...

dynamic data = new ExpandoObject();

IDictionary<string, object> dictionary = (IDictionary<string, object>)data;
dictionary.Add("FirstName", "Bob");
dictionary.Add("LastName", "Smith");

Console.WriteLine(data.FirstName + " " + data.LastName);