2017-09-26 69 views
1

所以我的節目讓我發送郵件使用WSDL請求類下面是由WSDL提供的類:如何創建在C#中使用自定義名稱的循環

CreateCustomerNoteRequest createCustomerNotesRequestInfo = new CreateCustomerNoteRequest(); 

使用這個類我必須設置變量像這樣:

 //FIRST WRITING NOTE TO OLD ACCOUNT TO SAY ITS BEEN COMPRIMISED AND SHOW NEW CUSTOMER NUMBER: 
      createCustomerNotesRequestInfo.UserName = username; 
      createCustomerNotesRequestInfo.Password = password; 
      createCustomerNotesRequestInfo.SystemToken = "sysToken"; 
      createCustomerNotesRequestInfo.Note = new CustomerNote(); 
      createCustomerNotesRequestInfo.Note.CustomerNumber = cloneCustomerNumber; 
      createCustomerNotesRequestInfo.Note.Category = new CustomerServiceWSDL.LookupItem(); 
      createCustomerNotesRequestInfo.Note.Category.Code = "GEN"; 
      createCustomerNotesRequestInfo.Note.Details = "Account Takeover – Fraud. Acc – " + customerNumberTextBox.Text + " closed as compromised and new account " + newCloneCustomerNumber + " created matching existing data"; 

而且玩完我用這讓我的迴應:

createCustomerNotesResponse = soapClient.CreateCustomerNote(createCustomerNotesRequestInfo); 

,一切工作正常。我現在想要做的是因爲我有多個Notes我想循環這個過程,所以取決於多少注意它會創建多個實例。

我順利拿到所有的筆記到像這樣使用notecount提供的票據有(由WSDL給出)多少數量的列表,以便所有的已經很不錯了:

 try 
      { 
       for (int i = 0; i <= notesCount; i++) 
       { 
        customerNotesArrayList.Add(getCustomerNotesResponse.Notes.Items[i]); 
        //i++; 
       } 
      } 

我想什麼這樣做:現在取決於票據指望我想創造,許多這樣的:

CreateCustomerNoteRequest createCustomerNotesRequestInfo = new CreateCustomerNoteRequest(); 

我嘗試這樣做:

 for (int i=0; i<=notesCount;i++) 
      { 
       CreateCustomerNoteRequest a[i] = new CreateCustomerNoteRequest(); 
      } 

但它不那麼容易,所以我怎樣才能做到這一點? 所以我想a1,a2,a3在哪裏,然後循環所有的筆記在後面這應該不成問題。但首先創建這些是問題。

[編輯]

//Create Notes and copy over array contents... 
       CreateCustomerNoteRequest request = new CreateCustomerNoteRequest(); 
       for (int i = 0; i <= notesCount; i++) 
       { 
        request.UserName = username; 
        request.Password = password; 
        request.SystemToken = systemToken; 
        request.Note = new CustomerNote(); 
        request.Note.CustomerNumber = newCloneCustomerNumber; 
        request.Note.Category = new CustomerServiceWSDL.LookupItem(); 
        request.Note.Category.Code = customerNotesArrayList[i].NoteCategory.Code.ToString(); 
        request.Note.Details = customerNotesArrayList[i].NoteText; 

        var response = soapClient.CreateCustomerNote(request); 
       } 

回答

3

你聲明中陣列循環,這意味着它將無法使用之後。此外,你需要事先聲明數組大小:不是數組的

CreateCustomerNoteRequest[] a = new CreateCustomerNoteRequest[notesCount]; 
for (int i = 0; i < notesCount; i++) 
{ 
    a[i] = new CreateCustomerNoteRequest(); 
} 

// now you can use the array outside the loop as well 

,你可以選擇使用List<CreateCustomerNoteRequest>,不首先需要一個大小聲明。

請注意,如果你打算獲得相同的循環內的音符,你將不再需要在陣列全天:

for (int i = 0; i < notesCount; i++) 
{ 
    CreateCustomerNoteRequest request = new CreateCustomerNoteRequest(); 
    var response = soapClient.CreateCustomerNote(request); 
    // todo process response 
} 
+0

嘗試循環只發生一次以上,IV嘗試了一個小時在解決綁定錯誤後仍然無法弄清楚。請參閱編輯 – Tantrix1

+0

在您的示例中,您已在'for'循環中使用'i == notesCount'作爲條件 - 循環只在條件爲'true'時繼續。 –

+0

將其更改爲for(int i = 0; i <= notesCount; i ++)僅運行一次。只創建一個音符。當設置int i = 1;它沒有創造任何東西。 – Tantrix1

相關問題