В экземпляре объекта не задана ссылка на объект - PullRequest
1 голос
/ 14 февраля 2009

Я обычно получаю эту ошибку и (всегда) не знаю, как ее решить. На этот раз я тоже это понял, кажется, я не понимаю концепцию или что-то упустил Вот код

        // 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

Пожалуйста, помогите, а также объясните, что происходит Спасибо

Ответы [ 8 ]

3 голосов
/ 14 февраля 2009

Я наконец нашел проблему Это было из-за моего брандмауэра, кажется, блокирует подключения к Visual Studio. Теперь это работает без изменений вообще :) Спасибо за вашу поддержку

2 голосов
/ 14 февраля 2009

Эта ошибка - боль, в основном это означает, что какой-то vairable, к которому вы обращаетесь, все еще имеет значение Null.

В этом случае, где вы инициализируете Временную шкалу? Если ваш код будет что-то вроде:

Users users = core.GetTimeline().Friends;

ОК, я просматривал документацию twiteroo, которая немного скудна, и я думаю, что вам определенно нужно создать экземпляр Timeline для передачи в GetTimeline (который возвращает коллекции пользователей, не очень хорошо названные ПО МОЕМУ МНЕНИЮ). Чего я не могу понять, так это как инициировать экземпляр временной шкалы.

ОК, это не Timeline, который является нулевым (это Enum!), Так что, как говорит bthb, это может быть только ядро, возможно, неверное имя пользователя или пароль, или он не может подключиться к твиттеру?

1 голос
/ 14 февраля 2009

В сообщении об ошибке есть две конкретные фразы: ссылка на объект и экземпляр объекта . Эти понятия являются основными при работе с языками ООП.

Во-первых, ссылка на объект может рассматриваться как переменная в функции или классе. Этот термин также может относиться к параметрам функции, которые ожидают конкретной ссылки на объект. Первоначально значение переменной равно NULL, пока оно не будет установлено в значение с помощью оператора '='. Часто у вас будет объявление переменной и операция '=' в одном выражении.

Термин экземпляр объекта относится к объекту, который был создан с использованием синтаксиса new. При вызове new для инициализации объекта выделяется неиспользуемая ячейка памяти для хранения копии объекта до тех пор, пока программа не завершится или объект не выйдет из области видимости и не будет освобожден сборщиком мусора. Во время создания свойства объекта определяются методом конструктора, вызываемым для создания объекта.

Рассмотрим этот код:

Integer my_int;
my_int = new Integer(5);

В этом примере my_int является ссылкой на объект на Integer объект экземпляр , который создается.

Если вы попытаетесь получить доступ к «my_int», прежде чем назначить ему ссылку на Integer экземпляр , тогда у вас будет ошибка « ссылка на объект (my_int) не установлен экземпляр объекта (Integer) ".

1 голос
/ 14 февраля 2009

Как насчет проверки вашего кода, например:

Users users = null;
if (Timeline != null)
{
    TwitterooCore core = new TwitterooCore(username, password);
    if (core != null)
    {
        var friends = Timeline.Friends
        if (friends != null)
            users = core.GetTimeline(Timeline.Friends);
    }
}

Если это работает без исключений, один из объектов, вероятно, был нулевым.

1 голос
/ 14 февраля 2009

Если бы я был на вашем месте, я бы поставил точку останова на строке с ошибками, затем прикрепил бы часы к Timeline.Friends и проверил бы, что они не равны NULL, если нет, тогда установите часы на core.GetTimeline (Timeline.Friends) и посмотрим, вернется ли это null.

Это должно дать вам толчок в правильном направлении, вам, вероятно, придется прочитать документацию по API Twitter, который вы используете, чтобы выяснить, почему любой из них возвращает нуль.

1 голос
/ 14 февраля 2009

Это может быть ядро, имя пользователя, пароль или Timeline.Friends, невозможно узнать, какая информация предоставлена ​​нам.

1 голос
/ 14 февраля 2009

Если вы декомпилируете dll, вы увидите, что GetTimeline (Enum) принимает аргумент перечисления.

вызов конструктора будет в порядке:

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);
}
0 голосов
/ 14 февраля 2009

Может быть Timeline.Friends имеет значение null, а Timeline может иметь значение null. Я предлагаю вам взглянуть на трассировку стека исключений и на документацию вашего фреймворка Twitter.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...