如何仅对列表中的项目子范围分配属性?我想使用AutoFixture创建自定义对象列表。我希望将前N个对象的属性设置为一个值,将其余对象设置为另一个值(或简单地由Fixture的默认策略设置)。我知道我可以使用Fixture.CreateMany.With,但是这个Fixture.CreateMany.With是一个应用于列表所有成员的函数。在NBuilder中,有提供此功能的名为TheNext和TheNext(以及其他)的方法。它们的使用示例:给定一个类Foo:classFoo{publicstringBar{get;设置;}publicintBlub{get;一组Foo可以像这样实例化:classTestSomethingUsingFoo{///...setupetc.[Test]publicstaticvoidTestTheFooUser(){varfoosToSupplyToTheSUT=Builder.CreateListOfSize(10).TheFirst(5).With(foo=>foo.Bar="Baz").TheNext(3).With(foo=>foo.Bar="Qux").All().With(foo=>foo.Blub=11).Build();///...在SUT上执行测试}}这给出了具有以下属性的Foo类型的对象列表:[Object]Foo.BarFoo.Blub--------------------------------0Baz101Baz102Baz103Baz104Baz105Qux106Qux107Qux108Bar9109Bar1010(Bar9和Bar10的值代表NBuilder的默认命名方案)有没有办法使用AutoFixture来实现这种“内置”的功能?或者像这样设置夹具的惯用方法?到目前为止,最简单的方法是:varfoos=fixture.CreateMany(10).ToList();foos.Take(5).ToList().ForEach(f=>f.Bar="Baz");foos.Skip(5).Take(3).ToList().ForEach(f=>f.Bar="Qux");foos.ForEach(f=>f.Blub=11);已经为C#内置了给属性赋值的函数,所以AutoFixture的理念是使用已经可用的语言结构,而不是提供一个限制性的API来阻止你做任何你想做的事情。从设计中受益。以上是C#学习教程:Howtoassignapropertyononlyasubrangeofitemsinalist?如果所有分享的内容对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
