0

我有一个需要字体数据的 WCF 服务。所以我创建了自己的类,它有一个 System.Drawing.Font 类型的成员。我检查了,字体类被标记为可序列化。当我尝试调用该方法并传入我的对象时,出现以下错误:

{“不应使用数据合同名称‘FontStyle:http://schemas.datacontract.org/2004/07/System.Drawing’键入‘System.Drawing.FontStyle’。将任何未知类型静态添加到已知列表类型 - 例如,通过使用 KnownTypeAttribute 属性或将它们添加到传递给 DataContractSerializer 的已知类型列表中。"}

注意它在抱怨 FontStyle,它实际上是 Font 类的一个属性。FontStyle 是一个简单的标志枚举,我什至没有设置它(但我想它有一个默认值)。

那么是否有可能/最佳实践为此重用 Font 类,还是我需要以不同的方式实现它?

4

1 回答 1

1

例外只是意味着当序列化程序检查您正在序列化的类时,它无法确定它需要包含 FontStyle 枚举。尝试使用 [KnownType(typeof(System.Drawing.FontStyle))] 属性标记您的类(具有 Font 属性的类)。

此外,请查看您生成的客户端并确保 KnownType 属性在其中。svcutil 存在一些问题,当顶级参数类中未使用该类型时,它有时会忽略已知类型。

于 2012-07-12T15:28:15.363 回答