- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在我的应用程序中,我正在序列化消息以使用 protobuf-net 通过网络发送。每条消息都有一个标题信息的键值对列表。
但是,我遇到了一个异常,我已经能够用一个非常简单的例子重现它:
[TestFixture]
public class SerializationTests
{
[ProtoContract]
public class MyType
{
[ProtoMember(1, DynamicType = true)]
public object Property { get; set; }
}
[Test]
public void SerializationTest()
{
var myType = new MyType {Property = DateTime.UtcNow.ToBinary()};
Action action = () => myType.Serialize();
action.ShouldNotThrow();
}
}
public static byte[] Serialize<T>(this T itemToSerialize)
{
using (MemoryStream ms = new MemoryStream())
{
ProtoBuf.Serializer.Serialize(ms, itemToSerialize);
byte[] objectArray = ms.ToArray();
return objectArray;
}
}
此测试当前失败,出现以下异常:System.InvalidOperationException:“动态类型不是契约(Contract)类型:Int64”。
该属性属于对象类型,因此我可以在其中放置各种数据 - 因为这是标题信息。我试图避免有多个标题列表,其中每个标题列表都是强类型的。
如果我将 Property 更改为 long 类型,则测试有效。如果我删除 DynamicType=true,则会收到一个异常,指示类型对象不存在序列化程序。
由于当我更改属性类型时测试有效,这似乎意味着 DynamicType 和 long 不能一起工作。
我目前正在使用 r640(我相信这是 NuGet 上的最新版本)。
最佳答案
动态类型
的当前实现不支持原语。它仅支持契约类型(其他类以某种方式定义为 ProtoContract
)。
来自 the wiki :
DynamicType - stores additional Type information with the type (by default it includes the AssemblyQualifiedName, although this can be controlled by the user). This makes it possible to serialize weak models, i.e. where object is used for property members, however currently this is limited to contract types (not primitives), and does not work for types with inheritance (these limitations may be removed at a later time). Like with AsReference, this uses a very different layout format
关于c# - protobuf-net 使用 DynamicType 序列化 System.Object 抛出异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17192702/
假设我有一个协议(protocol): protocol VehicleModel {...} 它是由许多不同的结构实现的。 (例如 CarModel、TruckModel 等)我有一个通用方法来获取
考虑下面的例子: class P {} class C: P {} let i: P = C() let iDT = i.dynamicType let CS = C.self iDT == CS i
我有这些类(class): AppDataProtocol.swift public protocol AppDataProtocol{ var logoImagePath : String!
基本上我想为 UIViewController 或任何其他默认的 swift 类添加一个类型别名。这背后的原因是我想抽象我的代码,这样我就可以通过使用 this 而不是 self.dynamicTyp
我真的很困惑地发现下面的代码只是拒绝与典型的“Unexpectedly found nil while unwrapping an Optional value”异常一起崩溃,这是你期望从强制展开 b
我正在尝试生成一个实现接口(interface)的动态类,但是其中一个或多个成员已经存在于基础中。我在 C# 中编译了以下代码,并在反射器中检查它以查看 C# 编译器的作用。 class BaseCl
有没有办法在 Swift 2.1 中实现这一点 class Apple { } class Fruit { let apples = [Apple](); } let fruit = Frui
我刚刚更新到 Xcode 8 和 iOS 10(使用旧版 Swift 语言版本)。 尝试再次编译我的项目一直很痛苦,即使仍然使用旧的 Swift 语法。这次我的一个函数使用了 NSBundle(for
你好,这是我的第一篇文章,如果我做错了什么,请不要太难过:D 我正在为一个大程序写一个 DeSerializer,为此,我有自己的类(class) public class DeSerializeab
在某些情况下:tableView 有不止一种类型的 UItableViewCell,并且这些单元格实现了函数“setData(_:)”。所以,在 "tableView(_ tableView: UIT
在我的应用程序中,我正在序列化消息以使用 protobuf-net 通过网络发送。每条消息都有一个标题信息的键值对列表。 但是,我遇到了一个异常,我已经能够用一个非常简单的例子重现它: [TestFi
我是一名优秀的程序员,十分优秀!