2012-03-28 1 views
0

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

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

Любое понимание того, как это сделать, было бы весьма полезно.

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

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

линия с погрешностью:

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

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

+0

Пожалуйста, не приписывайте свои заголовки «C#» и тому подобное. Для этого нужны теги. –

+1

Какая ошибка вы видите? См. Http://stackoverflow.com/a/4660186/76337, который покажет вам, что вы делаете неправильно. –

+0

Спасибо за это. Я пересмотрел вопрос и вставил в него сообщение об ошибке. – user1270384

ответ

0

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

Dynamically Build an array in c#

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

Смежные вопросы