我在VS2010中创建了一个带有.Net 4设置的示例应用程序。我正在尝试ProtoBuf-Net Extention方法。但是,每当我尝试调用GetValue扩展时,它会抛出异常
Method or operation is not implemented
堆栈跟踪:
at ProtoBuf.ExtensibleUtil.GetExtendedValues[TValue](IExtensible instance, Int32 tag, DataFormat format, Boolean singleton, Boolean allowDefinedTag)
at ProtoBuf.Extensible.TryGetValue[TValue](IExtensible instance, Int32 tag, DataFormat format, Boolean allowDefinedTag, TValue& value)
at ProtoBuf.Extensible.TryGetValue[TValue](IExtensible instance, Int32 tag, DataFormat format, TValue& value)
at ProtoBuf.Extensible.GetValue[TValue](IExtensible instance, Int32 tag, DataFormat format)
at ProtoBuf.Extensible.GetValue[TValue](IExtensible instance, Int32 tag)
at PhoneBookData.PhoneBookSerializer.Serialize(PhoneBookProto phData) in E:\project\PhoneBook\Source\PhoneBookData\PhoneBookSerializer.cs:line 14
at ConsoleApplication1.Program.Main(String[] args) in E:\project\PhoneBook\Source\ConsoleApplication1\Program.cs:line 23
at System.AppDomain._nExecuteAssembly(Assembly assembly, String[] args)
at System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args)
at Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
at System.Threading.ThreadHelper.ThreadStart_Context(Object state)
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
at System.Threading.ThreadHelper.ThreadStart()
以下是具有Extention支持的Proto类。
[ProtoContract]
public class PhoneBookProto : Extensible
{
[ProtoMember(1, IsRequired=true)]
public string Name { get; set; }
[ProtoMember(2)]
public string Email { get; set; }
[ProtoMember(3)]
public AddressProto Address { get; set; }
[ProtoMember(4,IsRequired=true)]
public string PhoneNumber { get; set; }
}
[ProtoContract]
public class AddressProto
{
[ProtoMember(1)]
public string Line1 { get; set; }
[ProtoMember(2)]
public string Line2 { get; set; }
}
我做错了什么。我参考了最新的protobuf版本(561)可供下载。下面是我的代码,它不断崩溃。
Extensible.AppendValue<int>(phData, 5, 10);
Extensible.GetValue<int>(phData, 5);
修改 其他旧版本的protobuf也给了我同样的例外
答案 0 :(得分:1)
事实上。扩展数据是自v2重写以来缺少的最后一个数据。正如你所看到的那样next on the roadmap,但是实用(时间可用性等)我必须首先优先考虑最常见的.NET场景。扩展数据并不是最常见的用法。 V1具有完全可用的扩展数据API,并且r280(IIRC)仍然可用。
一旦我进入这个,我没有预料到(之前曾经写过一次)它是一项巨大的工作,所以我希望它很快会在构建中。
编辑:这应该从r565开始提供