C# 用AutoPoco填充列表属性

C# 用AutoPoco填充列表属性,c#,.net,unit-testing,autopoco,C#,.net,Unit Testing,Autopoco,我最近尝试了AutoPoco for c#,这是一个自动创建POCO并用测试数据填充它们的工具。然而,我现在陷入了困境。我有一个人POCO,每个人都有一个电子邮件地址列表,如下所示: class Person { String Name; int Age; List<string> EmailAddresses; } 班级人员 { 字符串名; 智力年龄; 列出电子邮件地址; } 现在我尝试用AutoPoco填充它: x.In

我最近尝试了AutoPoco for c#,这是一个自动创建POCO并用测试数据填充它们的工具。然而,我现在陷入了困境。我有一个人POCO,每个人都有一个电子邮件地址列表,如下所示:

class Person
{
    String Name;
    int Age;
    List<string> EmailAddresses;
}
班级人员
{
字符串名;
智力年龄;
列出电子邮件地址;
}
现在我尝试用AutoPoco填充它:

                x.Include<Person>()
                   .Setup(p => p.Name).Use<FirstNameSource>();
                   .Setup(p => p.EmailAddresses).Use<EmailAddressSource>()
                ;
x.Include()
.Setup(p=>p.Name).Use();
.Setup(p=>p.EmailAddresses).Use()
;

但是第二行由于语法错误而失败,因为它需要的是字符串属性,而不是列表。AutoPoco有一个EnumerableSource,这可能是我需要的,但是我找不到它的任何代码示例。你能给我一个关于如何用AutoPoco填充字符串列表的提示吗?

这里是一个工作示例。您发布的代码段没有编译,因此这是第一个问题

我找不到更优雅的方法来生成集合的元素

public class Person
{
    public String Name;
    public int Age;
    public List<string> EmailAddresses = new List<string>();

    public void Add(string email)
    {
        EmailAddresses.Add(email);
    }
}

[Test]
public void Noodling()
{
        IGenerationSessionFactory factory = AutoPocoContainer.Configure(x =>
    {
        x.Conventions(c => { 
            c.UseDefaultConventions();
        });
        x.AddFromAssemblyContainingType<LegacyUserProfileDto>();

        x.Include<Person>()
            .Setup(p => p.Name).Use<FirstNameSource>()
            .Invoke(z => z.Add(Use.Source<string, EmailAddressSource>()));
        //.Invoke(z => z.EmailAddresses.Add(Use.Source<string, EmailAddressSource>()));//Fails
    });
    IGenerationSession session = factory.CreateSession();

    Person person = session.Single<Person>().Get();
    Console.WriteLine(person.Age + " " + person.Name);
    foreach (string emailAddress in person.EmailAddresses)
    {
        Console.WriteLine(emailAddress);    
    }
}
公共类人物
{
公共字符串名称;
公共信息;
公共列表EmailAddresses=新列表();
公共无效添加(字符串电子邮件)
{
电子邮件地址。添加(电子邮件);
}
}
[测试]
公众面
{
IGenerationSessionFactory工厂=autopocContainer.Configure(x=>
{
x、 约定(c=>{
c、 使用默认约定();
});
x、 AddFromAssemblyContainingType();
x、 包括()
.Setup(p=>p.Name).Use()
.Invoke(z=>z.Add(Use.Source());
//.Invoke(z=>z.EmailAddresses.Add(Use.Source());//失败
});
IGenerationSession session=factory.CreateSession();
Person=session.Single().Get();
Console.WriteLine(person.Age+“”+person.Name);
foreach(字符串emailAddress in person.emailAddress)
{
Console.WriteLine(电子邮件地址);
}
}