私はWCFとMemoryCacheをいじっています。目標は、Windows サービスで WCF をホストして、さまざまなクライアントがこのキャッシュにアクセスできるようにすることです。
最初の部分であるホストのセットアップは正常に機能し、別のクライアント アプリケーションを介してキャッシュへの書き込みとキャッシュからの読み取りを行うことができます。少なくとも、文字列や int などの値型など、非常に単純なオブジェクトをキャッシュに入れようとする場合。
「カスタム」オブジェクトを試してみると、文字列プロパティしかない場合でも、問題が発生し始めます。
There was an error while trying to serialize parameter http://tempuri.org/:value.
TheInnerException message was 'Type 'Solution.MyType' with data contract name
'MyType:http://schemas.datacontract.org/2004/07/MyType' is not expected.
Consider using a DataContractResolver or add any types not known statically to the list
of known types
- for example, by using the KnownTypeAttribute attribute or by
adding them to the list of known types passed to DataContractSerializer.'.
Please see InnerException for more details.
検索を行った結果、タイプを KnownType 属性で装飾する必要があるかもしれないことがわかりましたが、残念ながら成功しませんでした。また、DataContract および DataMember 属性で装飾しようとしましたが、シガーもありませんでした。
今何をする?WCF DataContractResolver は私のためにこの作業を行うことになっていませんか? シリアライズしたいすべてのクラスに対してカスタム DataContractResolver を作成する必要があるとは信じがたいです。DataContract および DataMember 属性は他に何のためにあるのでしょうか?
ここで何が欠けていますか?また、MyType は別のクラス (保存オブジェクト) から継承しないことに注意してください。