Динамическое добавление свойств к динамическому объекту?

у меня есть это

dynamic d = new ExpandoObject();
d.Name = attribute.QualifiedName.Name;

Итак, я знаю, что у d будет имя свойства. Теперь, если я не знаю имя свойства во время компиляции, как мне добавить это свойство в динамический. я нашел этот вопрос SO

Итак, существует сложная концепция связывания вызовов и т. д., которую трудно получить в первую очередь. Какой более простой способ сделать это?


person ashutosh raina    schedule 03.12.2011    source источник
comment
возможный дубликат Добавление неизвестных (во время разработки) свойств к ExpandoObject   -  person nawfal    schedule 20.07.2014


Ответы (2)


Вот способ чище

var myObject = new ExpandoObject() as IDictionary<string, Object>; myObject.Add("Country", "Ireland");

person Rustovich    schedule 13.12.2013

Вы также можете сделать это так: -

Dictionary<string,object> coll = new Dictionary<string,object>();
    coll.Add("Prop1","hello");
    coll.Add("Prop2",1);
    System.Dynamic.ExpandoObject obj = dic.Expando();

//You can have this ext method to better help

public static ExpandoObject Expando(this IEnumerable<KeyValuePair<string, object>> 
dictionary)
        {
            var expando = new ExpandoObject();
            var expandoDic = (IDictionary<string, object>)expando;
            foreach (var item in dictionary)
            {
                expandoDic.Add(item);
            }
            return expando;
        }
person Ankit Patial    schedule 03.12.2011