我有一个需要字体数据的WCF服务。所以我创建了自己的类,它有一个System.Drawing.Font类型的成员。我检查过,Font类被标记为可序列化。当我尝试调用该方法时,传入我的对象,我收到以下错误:
{“输入带有数据合约名称的'System.Drawing.FontStyle' 'FontStyle:http://schemas.datacontract.org/2004/07/System.Drawing'是 没想到。将任何静态未知的类型添加到已知列表中 types - 例如,通过使用KnownTypeAttribute属性或by 将它们添加到传递给的已知类型列表中 DataContractSerializer的。“}
请注意,它抱怨FontStyle,它实际上是Font类的属性。 FontStyle是一个简单的标志枚举,我甚至没有设置(但它有一个我想的默认值)。
为此,只需重用Font类就可行/最佳实践,还是需要以不同的方式实现它?
答案 0 :(得分:1)
异常只是意味着当序列化程序检查您正在序列化的类时,它无法确定它是否需要包含FontStyle枚举。尝试使用[KnownType(typeof(System.Drawing.FontStyle))]属性标记您的类(具有Font属性的类)。
另外,请查看生成的客户端,并确保KnownType属性在其中生成。 svcutil存在一些问题,当顶级参数类中未使用该类型时,它有时会遗漏已知类型。