error : Unable to perform runtime binding (when location/hometown/any setting is not set in facebook profile)-Collection of common programming errors

I am facing an error

Cannot perform runtime binding on a null reference

Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

Exception Details: Microsoft.CSharp.RuntimeBinder.RuntimeBinderException: Cannot perform runtime binding on a null reference

Source Error:

Line 27: lblBirthday.Text = (myInfo.birthday == null ? string.Empty : DateTime.Parse(myInfo.birthday).ToString(“dd-MMM-yy”)); Line 28: lblHometown.Text = (myInfo.hometown.name == null ? string.Empty : myInfo.hometown.name); Line 29: lblLocation.Text = (myInfo.location.name == null ? string.Empty : myInfo.location.name); Line 30: pnlHello.Visible = true; Line 31: }

Here is my code :

var fb = new FacebookWebClient();
    dynamic myInfo = fb.Get("me");
    lblName.Text = myInfo.name;
    imgProfile.ImageUrl = "https://graph.facebook.com/" + myInfo.id + "/picture";
    lblBirthday.Text = (myInfo.birthday == null ? string.Empty : DateTime.Parse(myInfo.birthday).ToString("dd-MMM-yy"));
    lblHometown.Text = (myInfo.hometown.name == null ? string.Empty : myInfo.hometown.name);
    lblLocation.Text = (myInfo.location.name == null ? string.Empty : myInfo.location.name);
    pnlHello.Visible = true;
  1. First check for myInfo.location being null:

    lblLocation.Text = myInfo.location == null ? "" : myInfo.location.name ?? "";
    

    (And likewise for similar members.)

    It’s a bit of a pain, admittedly, but basically you need to account for anything that might be null, to make sure you don’t try to dereference it.

  2. I changed my code as :

    var fb = new FacebookWebClient();
    dynamic myInfo = fb.Get("me");
    lblName.Text = myInfo.name;
    imgProfile.ImageUrl = "https://graph.facebook.com/" + myInfo.id + "/picture";
    lblBirthday.Text = (myInfo.birthday == null ? string.Empty : DateTime.Parse(myInfo.birthday).ToString("dd-MMM-yy"));
    lblHometown.Text = (myInfo.hometown == null ? string.Empty : myInfo.hometown.name);
    lblLocation.Text = (myInfo.location == null ? string.Empty : myInfo.location.name);
    pnlHello.Visible = true;
    

Originally posted 2013-11-30 22:01:35.