gpt4 book ai didi

protobuf-net - Protobuf 异常 - 对象引用未设置为对象的实例

转载 作者:行者123 更新时间:2023-12-05 07:41:31 33 4
gpt4 key购买 nike

我正在尝试使用 protobuf 序列化我的下面的类,但它因“对象引用”错误而失败。更多详情如下。通过查看错误详细信息,您知道会出现什么问题吗?注意:我的用户对象太大了,它有太多的子对象和属性。所以不要在此处添加用户类详细信息。

[ProtoContract]
public class MyPrincipal
{

public MyPrincipal(string Id, int myId)
{
this.Id = Id;
this.MyId = myId;
this.Principals = new Dictionary<MyPrincipalType, User>();
}

[ProtoMember(1)]
public string Id { get; set; }


[ProtoMember(2)]
public int MyId { get; set; }

[ProtoMember(3)]
public Dictionary<MyPrincipalType, User> Principals { get; set; }


public MyPrincipal AddPrincipal(MyPrincipalType principalType, User principalValue)
{
this.Principals.Add(principalType, principalValue);
return this;
}
}


public enum MyPrincipalType
{
Test = 0
}

错误详情如下:

Exception: {"Object reference not set to an instance of an object."}

Inner StrackTrace : at ProtoBuf.Serializers.TagDecorator.get_ExpectedType() at ProtoBuf.Serializers.DefaultValueDecorator..ctor(TypeModel model, Object defaultValue, IProtoSerializer tail) at ProtoBuf.Serializers.MapDecorator`3..ctor(TypeModel model, Type concreteType, IProtoSerializer keyTail, IProtoSerializer valueTail, Int32 fieldNumber, WireType wireType, WireType keyWireType, WireType valueWireType, Boolean overwriteList)

Outer StackTrace: at System.RuntimeMethodHandle.InvokeMethod(Object target, Object[] arguments, Signature sig, Boolean constructor) at System.Reflection.RuntimeConstructorInfo.Invoke(BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)at System.Reflection.ConstructorInfo.Invoke(Object[] parameters)at ProtoBuf.Meta.ValueMember.BuildSerializer() at ProtoBuf.Meta.ValueMember.get_Serializer() at ProtoBuf.Meta.MetaType.BuildSerializer() at ProtoBuf.Meta.MetaType.get_Serializer() at ProtoBuf.Meta.RuntimeTypeModel.Serialize(Int32 key, Object value, ProtoWriter dest) at ProtoBuf.Meta.TypeModel.SerializeCore(ProtoWriter writer, Object value) at ProtoBuf.Meta.TypeModel.Serialize(Stream dest, Object value, SerializationContext context) at ProtoBuf.Meta.TypeModel.Serialize(Stream dest, Object value) at ProtoBuf.Serializer.Serialize[T](Stream destination, T instance)

此问题仅适用于最新的 nuget 版本 2.3.0。当我使用 2.0.0.668 版本时,它工作正常。

最佳答案

这是一个库错误,从外观上看是一个令人讨厌的错误。我有 logged it as an issue .

有一个解决方法:现在明确禁用字典上的“ map ”处理 - 添加 [ProtoMap(DisableMap = true)]Principals。代码已修复,这应该包含在 2.3.1 中。我将审查 2.3.1 的其他候选版本,并决定哪些保证迅速发布 - 将其余的移至 2.3.2(这样我们就可以尽快发布带有此修复程序的 2.3.1)。

关于protobuf-net - Protobuf 异常 - 对象引用未设置为对象的实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45263611/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com