如何在 C# 中使用自定义名称在循环中创建 class

How to create a class in a loop with custom names in C#

所以我的程序允许我使用 WSDL 发送请求,下面的 class 是由 WSDL 提供的:

CreateCustomerNoteRequest createCustomerNotesRequestInfo = new CreateCustomerNoteRequest();

使用这个 class 我必须像这样设置变量:

     //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 我想循环这个过程所以取决于有多少 Note 它会创建那么多实例。

我使用 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);
                }

您在循环声明数组,这意味着它之后将不可用。此外,您需要事先声明数组大小:

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
}