Tip #832: Dynamic does not work in sandbox

Dynamic not DynamicS. The reference is to dynamic keyword making C# developer’s life easier since 2010. As Rickard “Ikea Frysta Köttbullar” Norström has discovered, the following code works in a sandbox on-premises but spits the dummy in Dynamics 365 Online environment. Not all sandboxes were created equal, it seems.

string outstring = "get it from an external service";
if (!string.IsNullOrEmpty(outstring))
{
   dynamic outp = JArray.Parse(outstring);
   if (outp.Count == 1)
   {
      var objekt = outp[0];
      if (objekt["ProjectTypeID"] != "ART")
      ...
   }
}

Avoiding dynamic and using explicit cast (instead of relying on var seems to be the key:

JArray outp = JArray.Parse(outstring);
string outstring = "get it from an external service";
if (!string.IsNullOrEmpty(outstring))
{
   JArray outp = JArray.Parse(outstring);
   if (outp.Count == 1)
   {
      JToken objekt = outp[0];
      if (objekt["ProjectTypeID"] != "ART")
      ...
   }
}

Tipp Jarr’s $0.02 + GST

If object coming down the wire is well known in advance, entire Newtonsoft assembly can be avoided by using DataContractJsonSerializer instead.

Tweet about this on TwitterShare on Facebook0Share on Google+0

One thought on “Tip #832: Dynamic does not work in sandbox

  1. […] got a bit of help by George Doubinski  and the issue was that the code I was using implicit typed variables. The reason for this is […]

Leave a Reply

Your email address will not be published. Required fields are marked *