I am trying to convert an Object to dynamic type but the conversion is failing with RunTimeBinder exception

JKay picture JKay · Mar 22, 2016 · Viewed 24.3k times · Source

I am trying to convert an Object to dynamic type but the conversion is failing with RunTimeBinder exception. I tried using two methods that I came across in Stackoverflow answers.

Code 1:

object objSum;
dynamic dynSum;
objSum = dataTableColumnChart.Compute(String.Format("Count({0})", strColumnName), "");
dynSum = Convert.ChangeType(objSum, objSum.GetType());\
Debug.Writeline(dynSum);

Code 2:

dynSum=objSum;
Debug.Writeline(dynSum);

The exception thrown is this:

A first chance exception of type 'Microsoft.CSharp.RuntimeBinder.RuntimeBinderException' occurred in Unknown Module.

Please note that in both cases exception is thrown when Debug statement is executed.

Answer

Anand Patel picture Anand Patel · Jun 26, 2016

Here is extension method to convert an object to Dynamic

public static dynamic ToDynamic(this object value)
    {
        IDictionary<string, object> expando = new ExpandoObject();

        foreach (PropertyDescriptor property in TypeDescriptor.GetProperties(value.GetType()))
            expando.Add(property.Name, property.GetValue(value));

        return expando as ExpandoObject;
    }