是否可以使用 foreach 在 IEnumerable 中创建新对象?

使用 XUnit,我想将字符串列表传递给测试(使用ClassData或MemberData)。有没有办法做这样的事情,但有一个列表:


之前:


public static IEnumerable<object[]> GetPersonFromDataGenerator()

{

    yield return new object[]

    {

        new Person {"Tribbiani"},

        new Person {"Gotti"},

        new Person {"Sopranos"},

        new Person {"Corleone"}

    };

}

之后:


public static IEnumerable<object[]> GetPersonFromDataGenerator()

{

    var listOfPersons = GetList();


    yield return new object[]

    {

        foreach(var p in listOfPersons)

        {

             new Person {p}

        } 

    };

}

它需要符合IEnumerable<object[]>XUnitClassData和MemberData装置的要求。


慕田峪9158850
浏览 179回答 2
2回答

撒科打诨

为什么不只是public static IEnumerable<Person> GetPersonFromDataGenerator(){&nbsp; &nbsp; foreach (var p in GetList())&nbsp; &nbsp; &nbsp; &nbsp; yield return p;}请记住,枚举器可以在一个方法中多次“产生回报”!或者,如果您确实想返回多个对象数组,您的代码可能如下所示:public static IEnumerable<object[]> GetPersonFromDataGenerator(){&nbsp; &nbsp; var listOfPersons = GetList();&nbsp; &nbsp; yield return listOfPersons.ToArray();}ToArray() 会将列表转换为数组。
打开App,查看更多内容
随时随地看视频慕课网APP