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.
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 }