1

通常、このエラーが発生し、(常に) 解決方法がわかりません。今回も入手しましたが、概念が理解できていないか、何かが欠けているようです。コードは次のとおりです

        // create a new twitteroo core with provided username/password
        TwitterooCore core = new TwitterooCore(username, password);

        // request friends timeline from twitter
        Users users = core.GetTimeline(Timeline.Friends); // error here

何が起こっているのかについての助けと説明をお願いしますありがとう

4

8 に答える 8

3

最終的に問題を発見しました。これは、ファイアウォールが Visual Studio への接続をブロックしているように見えるためです。今ではまったく変更なしで動作します:) ご支援いただきありがとうございます

于 2009-02-14T11:29:27.743 に答える
2

このエラーは面倒です。基本的に、アクセスしている変数がまだ Null であることを意味します。

この場合、タイムラインをどこで初期化しますか? コードは次のようになります。

Users users = core.GetTimeline().Friends;

OK、少しまばらな twiteroo ドキュメントを見てきましたが、Timeline のインスタンスをインスタンス化して GetTimeline に渡す必要があると思います (これはユーザーのコレクションを返しますが、IMHO という名前はあまりよくありません)。私が理解できないのは、タイムラインのインスタンスを開始する方法です。

OK、null は Timeline ではありません (これは Enum です!)。したがって、bthb が言うように、それはコアにすぎない可能性があります。おそらくユーザー名またはパスワードが間違っているか、Twitter に接続できませんか?

于 2009-02-14T11:07:43.693 に答える
1

dll を逆コンパイルすると、GetTimeline(Enum) が Enumeration 引数を受け取ることがわかります。

コンストラクター呼び出しは問題ありません。

TwitterooCore core = new TwitterooCore(username, password);

ソース:

public TwitterooCore(string username, string password)
{
        this._username = username;
        this._password = password;
}

GetTimeline は、接続が試行された場合です。

public Users GetTimeline(Timeline timeline)
{
    WebClient client = new WebClient();
    XmlDocument document = new XmlDocument();
    string xml = string.Empty;
    byte[] buffer = null;
    client.set_Credentials(this.GetCredentials());
    buffer = client.DownloadData(this.GetTimelineUrl(timeline));
    xml = Encoding.UTF8.GetString(buffer);
    document.LoadXml(xml);
    return this.DecodeStatusXml(document);
}
于 2009-02-14T11:10:42.423 に答える
1

コア、ユーザー名、パスワード、または Timeline.Friends のいずれかである可能性がありますが、提供された情報ではどれかを特定することはできません。

于 2009-02-14T11:11:48.490 に答える
1

私があなただったら、エラーが発生した行にブレークポイントを設定し、Timeline.Friends にウォッチを貼り付けて null でないことを確認します。そうでない場合は、core.GetTimeline(Timeline.Friends) にウォッチを配置して、それがエラーかどうかを確認します。 null を返します。

どちらかが null を返す理由を調べるには、使用している twitter API のドキュメントを読む必要があります。

于 2009-02-14T11:12:04.417 に答える
1

次のようなコードをチェックしてみてはいかがでしょうか:

ユーザー ユーザー = null;
if (タイムライン != null)
{
    TwitterooCore コア = 新しい TwitterooCore(ユーザー名、パスワード);
    if (コア != null)
    {
        var friends = Timeline.Friends
        もし (友達 != null)
            users = core.GetTimeline(Timeline.Friends);
    }
}

これが例外なく実行される場合、オブジェクトの 1 つが null である可能性があります。

于 2009-02-14T11:33:42.507 に答える
1

エラー メッセージには、object referenceinstance of an objectという 2 つの特定のフレーズがあります。これらの概念は、OOP 言語を扱うときの非常に基本的なものです。

まず、オブジェクト参照は、関数またはクラス内の変数と考えることができます。この用語は、オブジェクトへの特定の参照を期待する関数パラメーターを指す場合もあります。変数の値は、'=' 演算子を使用して値が設定されるまで、最初は NULL です。多くの場合、変数宣言と「=」操作が同じステートメントに含まれます。

オブジェクトのインスタンスという用語は、構文を使用して作成されたオブジェクトを指しますnew。オブジェクトを初期化するために呼び出すnewと、プログラムが終了するか、オブジェクトがスコープ外になり、ガベージ コレクターによって解放されるまで、オブジェクトのコピーを格納するために未使用のメモリ ロケーションが割り当てられます。作成時に、オブジェクトのプロパティは、オブジェクトを作成するために呼び出されるコンストラクター メソッドによって定義されます。

次のコードを検討してください。

Integer my_int;
my_int = new Integer(5);

この例では、'my_int' は作成中のオブジェクトインスタンスへのオブジェクト参照です。Integer

Integer インスタンスへの参照を割り当てる前に「my_int」にアクセスしようとすると、「オブジェクト参照(my_int) がオブジェクトのインスタンス( ) に設定されていません」というエラーが発生しますInteger

于 2009-02-14T11:38:05.197 に答える
0

Timeline.Friends が null である可能性があり、Timeline が null である可能性があります。例外のスタック トレースと、Twitter フレームワークのドキュメントを確認することをお勧めします。

于 2009-02-14T11:07:05.457 に答える