2012-03-28 5 views
0

私は今週この質問をすでに聞いてきましたが、より明確な答えが得られることを願って言い換えます。Webサービスクライアントで配列を初期化する方法

私はWebサービスで配列を扱っており、メッセージをサービスに送信するためにWebサービス内で配列を初期化するのが難しいです。

どのようにすればよいかについての洞察は非常に高く評価されます。

私のサービスの定義:

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#

私は私の配列を宣言して、例のように、私はforループ内に置か新しいインスタンスを作成しました。 int値NoofGuestsが最も有用でした。私の場合、NoofRatesを使用しました。

関連する問題