0

フォント データを必要とする WCF サービスがあります。そこで、System.Drawing.Font タイプのメンバーを持つ独自のクラスを作成しました。確認したところ、Font クラスはシリアライズ可能としてマークされています。オブジェクトを渡してメソッドを呼び出そうとすると、次のエラーが発生します。

{"データ コントラクト名が 'FontStyle:http://schemas.datacontract.org/2004/07/System.Drawing' のタイプ 'System.Drawing.FontStyle' は想定されていません。既知のリストに静的に不明なタイプを追加しますタイプ - たとえば、KnownTypeAttribute 属性を使用するか、DataContractSerializer に渡される既知のタイプのリストにそれらを追加します。"}

実際には Font クラスのプロパティである FontStyle について不平を言っていることに注意してください。FontStyle は単純なフラグ列挙型であり、設定すらしていません (ただし、デフォルト値があると思います)。

したがって、これに Font クラスを再利用することは可能/ベストプラクティスですか、それとも別の方法で実装する必要がありますか?

4

1 に答える 1

1

例外は、シリアライザーがシリアライズしているクラスを調べるときに、FontStyle 列挙型を含める必要があることを判断できないことを意味します。[KnownType(typeof(System.Drawing.FontStyle))] 属性を使用して、クラス (Font プロパティを持つクラス) をマークしてみてください。

また、生成されたクライアントを見て、KnownType 属性がそこに含まれていることを確認してください。型が最上位のパラメーター クラスで使用されていない場合に、既知の型が除外されることがあるという svcutil に関する問題がいくつかあります。

于 2012-07-12T15:28:15.363 に答える