0

を使用してログイン例を実装しFacebook OAuthましたが、ログイン資格情報の入力後に問題が発生しました。

TBInfosテキスト ボックスに取り込まれているフィールドの 1 つが原因で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 + " , ";
    }

}
4

1 に答える 1

0

上記のヌル ポインター例外は、取り込まれるフィールドごとにヌル チェックを追加することで解決しました。

以下はそれを修正しました:(me.gender ?? (object)string.Empty).ToString()

問題は、一部の Facebook プロファイルで、1 つまたは複数のフィールドが空白/null である可能性があり、それが例外の原因であるということでした。

于 2015-01-06T19:53:10.930 に答える