servicestack-text,servicestack-bsd,C#,Json,servicestack Text,Servicestack Bsd" /> servicestack-text,servicestack-bsd,C#,Json,servicestack Text,Servicestack Bsd" />

C# 使用ServiceStack.Text对常规列表的反序列化不正确

C# 使用ServiceStack.Text对常规列表的反序列化不正确,c#,json,servicestack-text,servicestack-bsd,C#,Json,servicestack Text,Servicestack Bsd,我想问一下,我得到的以下行为——v3(BSD)或v4——是否是一个bug 我有一个通用列表。我使用myList.ToJson()序列化它。因此,我得出以下结论: "[{\"__type\":\"MyNameSpace.MyType, MyAssembly\", ... (properties)}, {... (properties)}, {... (properties)}, {... (properties)}, ...]" 也就是说,只有第一个元素的类型被写入。因此,当我这样做时: var

我想问一下,我得到的以下行为——v3(BSD)或v4——是否是一个bug

我有一个通用列表。我使用myList.ToJson()序列化它。因此,我得出以下结论:

"[{\"__type\":\"MyNameSpace.MyType, MyAssembly\", ... (properties)},
{... (properties)},
{... (properties)},
{... (properties)},
...]"
也就是说,只有第一个元素的类型被写入。因此,当我这样做时:

var deserialised = myList.ToJson().FromJson<List<object>>();
地址:

在:

WriteType.WriteProperties
该行于2012年12月9日在067ce1f62fc6addd3685a2134dd576529db2549f处添加,以删除属性类型本身。我认为应该在写入所有属性之后,即在同一方法结束之前,恢复IsWritingDynamic以前的值。 有人能确认一下吗

FromJson<List<MyType>>()
JsState.IsWritingDynamic = false;
        if (WriteTypeInfo != null || JsState.IsWritingDynamic)
        {
            if (JsConfig.PreferInterfaces && TryWriteSelfType(writer)) i++;
            else if (TryWriteTypeInfo(writer, value)) i++;
            JsState.IsWritingDynamic = false;
        }
WriteType<T, TSerializer>.WriteProperties