Microsoft Hadoop Avro Serializer does not support IEnumerabl

本文关键字:not support IEnumerabl does Serializer Hadoop Avro Microsoft | 更新日期: 2023-09-27 18:08:43

我有一个简单的类,具有IEnumerable属性类型,而试图创建一个具有反射的序列化器(参见Microsoft . net SDK For Hadoop),它失败了以下异常。

找不到任何匹配的已知类型1 system . string] [' System.Collections.Generic.IEnumerable。

但是当使用string[]代替IEnumerable

时,它可以工作

使用的类

[DataContract]
public class MyClass
{
    [DataMember]
    public string Field1;
    [DataMember]
    //public string[] Array1; This works
    public IEnumerable<string> Array1; //this doesn't
}

代码
public void CreateSerializer()
{
    var serializer = AvroSerializer.Create<MyClass>();
}
任何帮助都是非常感激的。

Microsoft Hadoop Avro Serializer does not support IEnumerabl

为什么不支持IEnumerable ?

IEnumerable类型没有被枚举,所以里面的数据是未知的。它只有在被枚举时才会被知道。例如,当您调用ToArray()或ToList()时,就会发生这种情况。

由于它没有被枚举,因此序列化它是没有意义的,在反序列化之后,它可能不可能被枚举,因为没有数据将被保留。

必须在序列化之前枚举它,通过转换为Array或List或其他具体的集合类型。