【发布时间】:2013-05-29 03:48:18
【问题描述】:
编辑:请注意我的问题与编辑显示的问题不同。一般来说,我发送 IEnumerable 或 IDictionary 没有问题,但我在发送它们时遇到问题,包含接口。
我想知道 ServiceStack 是否有序列化或传输接口的 IEnumerables 的问题?返回其他对象(例如 DTO 或字符串)的操作不会导致任何问题,但是当我尝试返回 IEnumerable<IWhateverInterface> 时,客户端会收到一个空的枚举。我在服务中的操作返回它们之前验证了可枚举包含所需的元素,因此我看到的唯一问题是序列化或发送部分。
我确保在所有相关类中引用该接口。
谁能解释一下这个?
谢谢
【问题讨论】:
-
你为什么首先返回接口?你永远不应该嘲笑你的模型。
-
@mythz,你能详细说明一下吗?如何将所有内容映射到新的响应 DTO 中更可取?该接口是一个 IPluginAttributeView,我将它与 MEF 结合使用。关于如何改进这一点以及为什么它比我目前所做的更好的任何提示?我想学习并且可以公开承认我是新手,我不是网络程序员,因此不处理视图、模型和视图模型。
-
@myrthz,为什么返回 IDictionary
可以正常工作?毕竟它也是一个接口,我觉得发送集合接口是有充分理由的。 -
对于那些投票结束的人来说,这个问题是不同的,我在发送 IEnumerable 或 IDictionary 等接口时没有问题,而是发送包含 IPluginAttributeView (MEF) 等接口的集合。
-
您没有提供有关您的问题的任何上下文,因此我们无法验证它是什么,但是在服务层中返回接口是一种不好的做法,客户端/序列化程序不知道要补充什么具体的 impl当您有多个具体的实现或您想要替换行为时,主要使用它和接口,您不应该为模型做这些。我建议返回具体的 POCO 或 use purpose-specific DTOs。
标签: c# json serialization servicestack