Nano Hash - криптовалюты, майнинг, программирование

Массивы в веб-сервисах — ссылка на объект не указывает на экземпляр объекта

Я отправляю мыльные сообщения, содержащие массивы. У меня проблемы с массивами в моем коде. Это дает вышеуказанные ошибки, я искал везде, даже писал и переписывал свой код снова и снова, но я не могу найти, где я ошибаюсь.

Был бы так признателен, если бы кто-нибудь мог указать мне в правильном направлении:

UpdateRatePackages.IService.InventoryServiceClient isc = new UpdateRatePackages.IService.InventoryServiceClient();
    UpdateRatePackages.IService.UpdateRatePackagesRequest ureq = new UpdateRatePackages.IService.UpdateRatePackagesRequest();
    UpdateRatePackages.IService.UpdateRatePackagesOperationResponse ores = new UpdateRatePackages.IService.UpdateRatePackagesOperationResponse();

protected void Page_Load (отправитель объекта, EventArgs e) { SendSoapMessage(); }

защищенная пустота SendSoapMessage() {

        Int64 HID = 717759;
        Int64 HRID = 85264;
        int avail = 6;
       // RateDetails.AvailabilityApplicationType val  = RateDetails.AvailabilityApplicationType.SET;
       for (int i = 0; i < ureq.RatePackages.GetLength(0); i++)
        {
            ureq.RatePackages[i].RatePackageId = HRID;
            for (int j = 0; j < ureq.RatePackages[j].Rates.GetLength(0); j++)
            {
                ureq.RatePackages[i].Rates[j].Availability = avail;
                ureq.RatePackages[i].Rates[j].AvailabilityApplicationType = UpdateRatePackages.IService.AvailabilityApplicationType.SET;
                ureq.RatePackages[i].Rates[j].FromDate = Convert.ToDateTime("2012-03-21");
                ureq.RatePackages[i].Rates[j].ToDate = Convert.ToDateTime("2012-03-31");
            }

           // isc.UpdateRatePackages(request);

        }

Данные, определенные как в веб-сервисе:

     public class UpdateRatePackagesRequest
    {
        public string Username;
        public string Password;
        public UpdateRatePackageRequest[] RatePackages;


    }

    public class UpdateRatePackageRequest
    {
        public Int64 RatePackageId;
        public RateDetails[] Rates;

    }


    public class RateDetails
    {
        public decimal Rate;
        public enum RateApplicationType { SET, INCREASE, DECREASE, INCREASE_PERCENT, DECREASE_PERCENT } ;
        public int Availability;
        public enum AvailabilityApplicationType { SET , INCREASE, DECREASE };
        public bool StopSell;
        public string Inclusions;
        public int MinimumNightStay;
        public DateTime FromDate;
        public DateTime ToDate;

    }



    public class UpdateRatePackageResult
    {
        public Int64 RatePackageId;
        public Boolean Success;
        public string Message;

    }

    public class UpdateRatePackagesResponse

    {
        public UpdateRatePackageResult[] Result;

    }

Моя проблема в массивах или она как-то связана с самим мыльным сообщением?

строка, в которой выделена ошибка:

for (int i = 0; i ‹ ureq.RatePackages.GetLength(0); i++)

Пожалуйста помоги!


  • Что такое трассировка стека? В какой строке возникает исключение? 27.03.2012
  • В строке 100 это строка, которую я вставил сверху в кавычки. 27.03.2012
  • О, понял... хорошо, тогда либо ureq, либо RatePackages равно null, вы пробовали установить точку останова и проверить одну из них? 27.03.2012
  • Да, RatePackages имеет значение null, как мне это исправить? 27.03.2012

Ответы:


1
for (int i = 0; i < ureq.RatePackages.GetLength(0); i++)

Если ошибка происходит там, то либо ureq, либо RatePackages это null. Пройдитесь в отладчике и посмотрите, какой из них null. Похоже, вы устанавливаете ureq, но вы все равно должны проверить оба.

27.03.2012
  • RatePackages имеет значение null, как я могу это исправить? 27.03.2012
  • @user1270384 user1270384 взгляните на то, что должно устанавливать RetePackages, и убедитесь, что оно устанавливает для него допустимое значение. Я не знаю, как выглядит ваш код, поэтому ничего больше не могу сказать. Да прибудет с тобой сила! :) 27.03.2012
  • хорошо, спасибо за попытку помочь. Есть ли что-то, чего мне не хватает в приведенном выше коде, что я могу добавить, чтобы помочь вам? 27.03.2012
  • @ user1270384 в идеале вы должны иметь возможность создать пример, совместимый с sscce, который может легко продемонстрировать ошибку, но если он недоступен затем покажите любой код, относящийся к ошибке - в этом случае может быть полезно, если вы покажете нам, что должно устанавливать RatePackages. 27.03.2012
  • RatePackages происходит отсюда: открытый класс UpdateRatePackagesRequest { public string Username; общедоступная строка Пароль; открытый UpdateRatePackageRequest[] RatePackages; } это то, что вы спрашиваете? Это из того, что пользователь вводит 27.03.2012
  • Я работал с массивами, я работал с веб-сервисами, но мне впервые приходится использовать их вместе. Есть ли способ, которым я могу отразить в своем коде выше, откуда должны поступать RatePackages? Я что-то пропустил? Любая помощь будет принята с благодарностью. 27.03.2012
  • @user1270384 user1270384 Это класс, который содержит поле RatePacakges, так что достаточно ясно, но кажется, что UpdateRatePackagesRequest заполнено неправильно. Что может быть полезно для вас (а не для меня), так это если вы можете взглянуть на то, что должно устанавливать поле RatePackages. 27.03.2012
  • Является ли UpdateRatePackagesRequest классом, который вы написали? Где вы заполняете массив RatePackages? 27.03.2012
  • Нет, он принадлежит веб-сервису, которому я пытаюсь отправить обновления. 27.03.2012
  • Я пытаюсь отправить жестко запрограммированное сообщение в службу, прежде чем я смогу установить способ заполнения. Я могу отправить в службу с помощью пользовательского интерфейса мыла, поэтому я пытаюсь связаться с ним через код перед настройкой параметров и т. д. Имеет ли это смысл? 27.03.2012
  • @user1270384 user1270384 Я не работаю с веб-сервисами, поэтому не могу сказать, имеет ли это смысл или нет, но если вы думаете, что это имеет смысл, то, возможно, это имеет смысл ;). Однако дело в том, что вам нужно посмотреть, что должно заполнить RatePackages, прежде чем вы сможете использовать его в цикле for. 27.03.2012
  • Может быть, у вас есть пример заполнения массива, чтобы я мог сопоставить его, чтобы убедиться, что это не тот массив, с которым я ошибаюсь? 28.03.2012
  • @user1270384 user1270384 Это должно быть довольно просто... почти так же просто, как привет, мир. Как минимум, вы должны инициализировать свой массив, вот один из способов инициализации массива: int[] numbers = new int[10]; Заполнение — это создание цикла for for(int i = 0; i < numbers.Length; i++) и сохранение числа в каждом элементе массива. 28.03.2012
  • хорошо, это было большой помощью, спасибо, оказывается, проблема заключается в инициализации массивов, принадлежащих веб-службе. Есть ли на этом форуме кто-нибудь, кто разбирается в этом? 28.03.2012
  • Не стесняйтесь публиковать другой вопрос, более конкретный, и не забудьте пометить вопрос соответствующими тегами (чтобы его увидело больше людей). 28.03.2012
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

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

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..