如何在C#中初始化IEnumerable <CustomModel>?

时间:2019-07-16 10:01:44

标签: c# .net

.NET应用程序。我有这些课:

public class Product
{
    public string BrandDescription { get; set; }
    public string StyleNumber { get; set; }

    public FamilyTree FamilyTree { get; set; }
    public DssProduct DssProduct { get; set; }

    public IEnumerable<OptionData> Options { get; set; }
}

public class OptionData
{
    public Guid Id { get; set; }

    public Colour PrimaryColour { get; set; }
    public Colour SecondaryColour { get; set; }

    public IEnumerable<SizeData> Sizes { get; set; }
}

public class Colour
{
    public string Name { get; set; }
}

我正尝试如下向该模型添加一些示例数据。

return new ProductMessageEvents()
        {
          Metadata = new KafkaProductEvent.Metadata
          {
            Timestamp = "test",
            Environment = "test"
          },
          Product = new KafkaProductEvent.Product
          {
            AgeGrading = "test",
            KeycodeType = "type1",
            FamilyTree = new KafkaProductEvent.FamilyTree
            {
              Class = new KafkaProductEvent.CodeNamePair
              {
                Code = "test code",
                Name = "test name"
              }
            },
            DssProduct = new KafkaProductEvent.DssProduct
            {
              DocumentStatus = "active"
            }
          },
          Version = "latestVersion"
        };

我尝试如下。

Options = new OptionData[]
    {
      new OptionData
      {
        PrimaryColour = new Colour
        {
          Name = "White"
        }
      },
      new OptionData
      {
        PrimaryColour = new Colour
        {
          Name = "Green"
        }
      }
    }

我收到此错误:

  

无法将类型ProductEvents.OptionData []隐式转换为IList

在上面的代码中,我不确定如何向选项添加数据。有人可以帮我吗 将数据添加到IEnumerable的Option字段?任何帮助,将不胜感激。谢谢

3 个答案:

答案 0 :(得分:2)

您可以使用实现IEnumerable<T>的任何类型,例如List<T>或数组:

DssProduct = new KafkaProductEvent.DssProduct
{
  DocumentStatus = "active"
},
Options = new OptionData[]
{ new OptionData // fist option
    { Id = Guid.NewGuid()
    }
, new OptionData // second option
    { Id = Guid.NewGuid()
    }
}

答案 1 :(得分:1)

IEnumerable<T>只是一个通用接口。您可以使用实现该接口的任何具体类来初始化该字段。

最常见的是List<T>,因此您可以使用它来初始化字段。

答案 2 :(得分:0)

只需在初始化中使用new List<OptionData>或创建一个变量并使用它即可。

return new ProductMessageEvents()
{
    Metadata = new KafkaProductEvent.Metadata
    {
        Timestamp = "test",
        Environment = "test"
    },
    Product = new KafkaProductEvent.Product
    {
        AgeGrading = "test",
        KeycodeType = "type1",
        FamilyTree = new KafkaProductEvent.FamilyTree
        {
            Class = new KafkaProductEvent.CodeNamePair
            {
                Code = "test code",
                Name = "test name"
            }
        },
        DssProduct = new KafkaProductEvent.DssProduct
        {
            DocumentStatus = "active"
        },
        Options = new List<OptionData>
        {
            //Add all items here.
        }
      },
      Version = "latestVersion"
    };