Я хотел бы динамически добавлять свойства ExpandoObject во время выполнения. Так, например, чтобы добавить свойство свойства строки NewProp, я хотел бы написать что-то вроде
var x = new ExpandoObject();
x.AddProperty("NewProp", System.String);
Это легко возможно?
c#
c#-4.0
dynamic
expandoobject
Craig
источник
источник
Ответы:
В качестве альтернативы:
источник
Error 53 Cannot convert type 'System.Dynamic.ExpandoObject' to 'System.Collections.Generic.IDictionary<string,string>' via a reference conversion, boxing conversion, unboxing conversion, wrapping conversion, or null type conversion
IDictionary<string, object>
не такIDictionary<string, string>
.IDictionary
, вы не используетеdynamic
тип переменной.Как объяснил здесь Филипп - http://www.filipekberg.se/2011/10/02/adding-properties-and-methods-to-an-expandoobject-dynamicly/
Вы также можете добавить метод во время выполнения.
источник
Вот пример вспомогательного класса, который преобразует объект и возвращает Expando со всеми открытыми свойствами данного объекта.
Использование:
источник
я думаю, что это добавить новое свойство в желаемом типе без необходимости устанавливать примитивное значение, как, когда свойство определено в определении класса
источник