C# IEnumerable<T>,如何给T的成员/属性赋值

C# IEnumerable<T>, how to assign values to the members / properties of T

下面是我在 c# 中的结构

  public class Search
    {
        public IEnumerable<Cars> Cardetail { get; set; }
    }

 public class Cars
    {
        public string Id{ get; set; }
        public string StatusCode { get; set; }
        
    }

现在我想将数据分配给单元测试的 Cars.Id 和 Cars.Status 代码

如何分配它,因为它是 IEnumerbale 的一部分

我试过了

new Search()
{
 Cardetail = <IEnumerable> Cars{ Id ="1"} // but throws error 
 }

提前致谢

您需要选择一个实现 IEnumerable<T> 的 class - 最有可能的候选对象是数组或列表

var search = new Search()
{
   Cardetail = new Cars[] { new Cars{ Id ="1"} }
};

var search = new Search()
{
   Cardetail = new List<Cars> { new Cars{ Id ="1"} }
};

顺便说一句,class 的名字是单数的,所以 Car 而不是 Cars

var search = new Search
{
    Cardetail = new Car[]
    {
        new Car
        {
            Id = "UniqueId",
            StatusCode = "MyFancyStatusCode"
        }
    }
}

此代码应该可以实现您想要实现的目标。

在使用 new 关键字创建 class 的实例时,您可以使用 Object and Collection Initializers.

而不是写这个

var search = new Search();
search.Cardetail = ...

我们在花括号中赋值Cardetail

对于 Cardetail 我们必须决定要使用的实现,因为 CardetailIEnumerable<T> 类型,它是 Interface 并且我们不能创建接口实例.我们需要一个 实现 这个特定接口的类型,例如 ArrayList<T> (还有更多)。