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>();
}
任何帮助都是非常感激的。
IEnumerable类型没有被枚举,所以里面的数据是未知的。它只有在被枚举时才会被知道。例如,当您调用ToArray()或ToList()时,就会发生这种情况。
由于它没有被枚举,因此序列化它是没有意义的,在反序列化之后,它可能不可能被枚举,因为没有数据将被保留。
必须在序列化之前枚举它,通过转换为Array或List或其他具体的集合类型。