使用 Facebook OAuth 的运行时绑定问题

Runtime binding issue using Facebook OAuth

我使用 Facebook OAuth 实现了一个登录示例,但在输入登录凭据后遇到了问题。

被拉入 TBInfos 文本框的其中一个字段导致 null reference 由于用户可能没有其中一个字段的值。

我通常会使用类似这样的方法检查 null,s == null || s == String.Empty;但我不确定如何将它应用到下面的相关代码中。

我的问题是,如何对拉入文本框中的每个字段执行 null 或空检查?

完整抛出的错误如下:

 An exception of type 'Microsoft.CSharp.RuntimeBinder.RuntimeBinderException' occurred in System.Core.dll but was not handled in user code

    Additional information: Cannot perform runtime binding on a null reference

//create instance of FB client
private FacebookClient fbC;

这是从 Facebook 获取值的相关代码:

public InfoWindow(FacebookClient FBClient)
{
    InitializeComponent();
    fbC = FBClient;
    dynamic me = FBClient.Get("Me");
    TBInfos.Text = "Name : " + me.name.ToString() + "\n\r"
                   + "Gender : " + me.gender.ToString() + "\n\r"
                   + "Link : " + me.link.ToString() + "\n\r"
                   + "Quote : " + me.quotes.ToString() + "\n\r"
                   + "Sports : ";
    foreach (var item in me.sports)
    {
        TBInfos.Text += item.name + " , ";
    }
    TBInfos.Text += "\n\r" + "Favorite Athletes : ";
    foreach (var item in me.favorite_athletes)
    {
        TBInfos.Text += item.name + " , ";
    }
    TBInfos.Text += "\n\r" + "Languages : ";
    foreach (var item in me.languages)
    {
        TBInfos.Text += item.name + " , ";
    }

}

我通过为每个被拉入的字段添加空检查来解决上述空指针异常。

下面修复了它:(me.gender ?? (object)string.Empty).ToString()

问题是对于某些 Facebook 个人资料,一个或多个字段可能 blank/null,这就是导致异常的原因。