Как инициализировать массивы в клиенте веб-сервиса - PullRequest
0 голосов
/ 28 марта 2012

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

Я работаю с массивами в веб-службах и испытываю трудности с инициализацией массива в веб-службе для отправки сообщений в службу.

Буду очень признателен за понимание того, как это сделать.

определения моего сервиса:

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

Определенные классы для службы, на которую я пытаюсь отправить сообщения

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;
}

часть моего кода, которая дает мне ошибку:

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);
}

строка с ошибкой:

для (int i = 0; i

Сообщение об ошибке: Object reference not set to an instance of an object.

1 Ответ

0 голосов
/ 04 апреля 2012

Нашел эту ссылку, которая помогла все расставить в перспективе.

Динамически построить массив в c #

Я объявил свои массивы, а затем, как в примере, создал новые экземпляры, которые я поместил в циклы. Значение int NoofGest было самым полезным. В моем случае я использовал NoofRates

...