我正在修补 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 属性来装饰它,但也没有 sigar。
现在做什么?WCF DataContractResolver 不应该为我完成这项工作吗?我很难相信我必须为我想要序列化的每个类编写一个自定义 DataContractResolver。DataContract 和 DataMember 属性还有什么用途?
我在这里想念什么?另请注意,MyType 不会从另一个类(保存对象)继承。