我有一个相当简单的 WCF 服务,它来回发送传感器状态。其中一个类型包含 type 的属性Typepublic class SensorValue{ public string Name { get; set; } public string Value { get; set; } public Type ValueType { get; set; }}当我通过 WCF 检索传感器值列表时,我收到主题中提到的错误。是否有明显的原因导致我不允许Type通过 WCF 进行(反)序列化?
1 回答
BIG阳
TA贡献1859条经验 获得超6个赞
是System.Type
抽象的。假设您使用例如 a 设置该属性,typeof(System.Int32)
您将得到一个具体的实现,很可能是一个System.RuntimeType
。(不)幸运的是,该类型不是公开的,因此 Datacontract 序列化程序根本无法获取它。它失败并显示:
SerializationException:不需要输入数据协定名称为“RuntimeType: http: //schemas.datacontract.org/2004/07/System ”的“System.RuntimeType”。如果您使用 DataContractSerializer,请考虑使用 DataContractResolver,或者将任何静态未知的类型添加到已知类型列表中 - 例如,通过使用 KnownTypeAttribute 属性或将它们添加到传递给序列化器的已知类型列表中。
尝试任何指导来解决您的问题是没有用的。将 ValueType 属性的类型替换为正常的类型(例如字符串)并提供足够的信息以便客户端可以根据您在 ValueType 中提供的内容重新创建类型要容易得多。
- 1 回答
- 0 关注
- 81 浏览
添加回答
举报
0/150
提交
取消