早上好,我有这个带有嵌套模型的课程:
public class EmailMessage
{
public class EmailAddress
{
public string Name { get; set; }
public string Address { get; set; }
}
public EmailMessage()
{
ToAddresses = new List<EmailAddress>();
FromAddresses = new List<EmailAddress>();
}
public List<EmailAddress> ToAddresses { get; set; }
public List<EmailAddress> FromAddresses { get; set; }
public string Subject { get; set; }
public string Content { get; set; }
}
在实现 忘记密码 时,创建该类型的模型存在问题,但是我在语法上遇到了问题-我以这种方式尝试:
var message = new EmailMessage
{
ToAddresses =
{
Name = "Test",
Address = "test@gmail.com",
},
Subject = "Reset password token",
Content = callback);
}
正确的语法如何?是否需要使用foreach?
答案 0 :(得分:1)
您需要使用List<EmailAddress>
运算符初始化new
,然后还使用EmailAddress
运算符初始化列表中的每个新new
。此外,您定义了一个构造函数,该构造函数同时需要ToAddresses
和FromAddresses
列表。您可以这样实例化它:
var message = new EmailMessage(
ToAddresses: new List<EmailAddress>()
{
new EmailAddress()
{
Name = "Test",
Address = "test@gmail.com"
}
},
FromAddresses: new List<EmailAddress>())
{
Subject = "Reset password token",
Content = callback
};
请注意,就像问题中的代码一样,当前FromAddreeses
列表为空。
如果您有来自另一个集合(例如数据库)的多个地址,则也可以使用foreach
来构建List<EmailAddress>
,然后仅通过该构建列表来代替上例中的new List...
。请注意,foreach
不能在初始化语法内使用-它必须是单独的语句才能构建列表。