目标
为具有未知可枚举类型的服务动态公开 RSS/Atom 端点。该类型将通过反射找到以构建联合端点。
方法
我正在使用 .net 4.0
我正在反映一个 dll 以公开端点,即 json、xml、soap。这一切都如我所愿。(因此,我使用代码来配置我的 WCF 设置)。
我现在正在尝试为通过我的服务公开的反射找到的所有 ICollection 公开一个 rss 端点,以便我可以为每个返回 ICollection 的方法公开一个 SyndicationFeed。
我相信我想使用 datascontractsurrogate,并遵循了 msdn 必须添加的内容。我已经连接了我的 datacontractsurrogate,并且我观察到它在代理内部达到了我的调试点。
我从 svclog 查看器收到以下异常:
异常类型:
System.Runtime.Serialization.InvalidDataContractException, System.Runtime.Serialization, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
信息:
Using surrogates with get-only collection properties is not supported. Consider removing the surrogate associated with 'System.Collections.Generic.Dictionary`2[[System.Xml.XmlQualifiedName, System.Xml, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089],[System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]]'.
问题
- 从概念上讲,我有哪些选择来实现我想要实现的目标?
- 我可以保持一种类型安全的方式来输出 SyndicationFeed 类型,而不是选择将 adhoc 写入 xml 字符串吗?