microsoft hadoop avro序列化程序不支持ienumerable< string>

v09wglhw  于 2021-06-03  发布在  Hadoop
关注(0)|答案(1)|浏览(259)

我有一个simlpe类,它的属性类型为ienumerable,当尝试创建一个带有反射的序列化程序(请参见microsoft.net sdk for hadoop)时,它失败了,出现以下异常。
找不到任何与“system.collections.generic.ienumerable”“1[system.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或解决方法。

sbtkgmzw

sbtkgmzw1#

ienumerable类型尚未枚举,因此其中的数据未知。只有当它被枚举时才知道。例如,在调用toarray()或tolist()时会发生这种情况。
因为它还没有被枚举,所以序列化它是没有意义的,在它被反序列化之后可能无法被枚举,因为没有数据被保留。
在序列化之前,必须通过转换为数组、列表或其他具体集合类型来枚举它。

相关问题