Search code examples
c#type-conversiondynamictype

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


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.


Solution

  • The exception is:

    Cannot dynamically invoke method 'Write' because it has a Conditional attribute
    

    And when you check possible Debug.WriteLine inputs, "dynamic" is not one of them. So you need to cast it, to string for example:

        string strForWriteLine = dynSum.ToString() as string;
        Debug.WriteLine(strForWriteLine);
    

    Hope this helps

    *Edit: A little bit detail about dynSum.ToString() as string; When you just use ToString() you still get a dynamic string.

    var strForWriteLine = dynSum.ToString();
    

    strForWriteLine's type is dynamic { string }