using System.Collections.Generic;
public static void Main()
var myObject = new MyObject {str1 = "hello", int1 = 3};
dynamic expandoObj= dynamicHelper.convertToExpando(myObject);
dynamicHelper.AddProperty(expandoObj, "dynamicKey", "Some Value");
Console.WriteLine(expandoObj.str1);
Console.WriteLine(expandoObj.dynamicKey);
public static class dynamicHelper
public static ExpandoObject convertToExpando(object obj)
BindingFlags flags = BindingFlags.Public | BindingFlags.Instance;
PropertyInfo[] properties = obj.GetType().GetProperties(flags);
ExpandoObject expando = new ExpandoObject();
foreach (PropertyInfo property in properties)
AddProperty(expando, property.Name, property.GetValue(obj));
public static void AddProperty(ExpandoObject expando, string propertyName, object propertyValue)
var expandoDict = expando as IDictionary<String, object>;
if (expandoDict.ContainsKey(propertyName))
expandoDict[propertyName] = propertyValue;
expandoDict.Add(propertyName, propertyValue);
public string str1 {get; set;}
public int int1 {get; set;}