我最近试用了 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>()
;
但第二行因语法错误而失败,因为它需要一个字符串属性,而不是一个列表。 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);
}
}
关于c# - 使用 AutoPoco 填充列表属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14877372/