2011-10-29 90 views
0

我是真的新的C#和我试图解决一些代码使用亚马逊SES发送电子邮件的测试。C#字符串到列表

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

     string ToEmailAddresses = "[email protected]"; 
     string FromEmailAddress = "[email protected]"; 
     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是一个列表,而不是一个字符串,但我在努力寻找一种方法转换/处理这个。

谢谢!

回答

4

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

有很多方法来定义和填充列表,但最紧凑的是:

var toEmailAddresses = new List<string> { "[email protected]" } 

上面创建一个新的列表,并与一个字符串“[email protected]

初始化
+1

请注意,您可以用逗号分隔多个值来初始化列表,例如..... {“item1”,“item2”,“item3”} – Jason

+0

谢谢 - 这工作完美。等待时间一到,我会尽快接受答案。再次感谢! – Matt

2

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

那么,这样做:

List<String> toAddresses = new List<String>(); 
toAddresses.Add("[email protected]"); 

通toAddresses作为第一个参数

线索是错误消息。该公司预计列表,字符串,字符串,字符串

为 'MyServices.SESEmailProvider.SendEmail(
System.Collections.Generic.List,字符串,字符串,字符串)'
的最佳重载的方法匹配具有一定的无效的争论。

+0

感谢您的回答! – Matt

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

    List<string> ToEmailAddresses = new List<string>() {"[email protected]"}; 
    string FromEmailAddress = "[email protected]"; 
    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<string>

+0

感谢您的回答! – Matt