【问题标题】:C# string to list要列出的 C# 字符串
【发布时间】:2011-10-29 02:48:47
【问题描述】:

真的是 C# 的新手,我正在尝试对使用 Amazon SES 发送电子邮件的某些代码的测试进行故障排除。

    [TestMethod()]
    public void SendEmailTest()
    {
        SESEmailProvider target = new SESEmailProvider();

        string ToEmailAddresses = "someone@gmail.com";
        string FromEmailAddress = "no-reply@mydomain.com";
        string Subject = "Test";
        string EmailBody = "Hello world.";
        string expected = string.Empty;
        string actual;
        actual = target.SendEmail(ToEmailAddresses, FromEmailAddress, Subject, EmailBody);
        Assert.AreEqual(expected, actual);
        Assert.Inconclusive("Verify the correctness of this test method.");
    }

Visual Studio 中的错误信息是:

string SESEmailProvider.SendEmail(
 System.Collections.Generic.List<string> ToEmailAddresses,
 string FromEmailAddress, string Subject, string EmailBody)

Error:

 The best overloaded method match for 'MyServices.SESEmailProvider.SendEmail(
   System.Collections.Generic.List<string>, string, string, string)'
  has some invalid arguements.

我认为问题在于它期望 ToEmailAddresses 是一个列表,而不是单个字符串,但我正在努力寻找一种转换/处理它的方法。

谢谢!

【问题讨论】:

    标签: c# string asp.net-mvc-3 list


    【解决方案1】:

    您已经将变量 ToEmailAddresses 定义为一个字符串,但您希望它是一个列表。

    定义和填充列表的方法有很多种,但最简洁的是:

    var toEmailAddresses = new List<string> { "someone@gmail.com" }
    

    上面创建了一个新列表,并使用单个字符串“someone@gmail.com”对其进行初始化

    【讨论】:

    • 请注意,您可以使用逗号分隔多个值来初始化列表,例如.....{ "item1", "item2", "item3" }
    • 谢谢 - 这工作得很好。等待时间一到,我会立即接受答案。再次感谢!
    【解决方案2】:

    SendMail 需要一个 List 作为它的第一个参数 - 而不是一个字符串。

    所以,做:

    List<String> toAddresses = new List<String>();
    toAddresses.Add("someone@mail.com");
    

    将 toAddresses 作为第一个参数传递

    线索在错误消息中。它需要列表,字符串,字符串,字符串

    最好的重载方法匹配 'MyServices.SESEmailProvider.SendEmail(
    System.Collections.Generic.List,字符串,字符串,字符串)'
    有一些无效的论点。

    【讨论】:

      【解决方案3】:
      [TestMethod()] 
      public void SendEmailTest() 
      { 
          SESEmailProvider target = new SESEmailProvider(); 
      
          List<string> ToEmailAddresses = new List<string>() {"someone@gmail.com"}; 
          string FromEmailAddress = "no-reply@mydomain.com"; 
          string Subject = "Test"; 
          string EmailBody = "Hello world."; 
          string expected = string.Empty; 
          string actual; 
          actual = target.SendEmail(ToEmailAddresses, FromEmailAddress, Subject, EmailBody); 
          Assert.AreEqual(expected, actual); 
          Assert.Inconclusive("Verify the correctness of this test method."); 
      } 
      

      试试看。我已将您的变量从 string 更改为 List&lt;string&gt;

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-08-31
        • 2014-08-08
        • 1970-01-01
        • 1970-01-01
        • 2021-09-04
        • 2018-09-29
        • 2011-07-24
        • 1970-01-01
        相关资源
        最近更新 更多