servicestack,C#,Json,Serialization,servicestack" /> servicestack,C#,Json,Serialization,servicestack" />

C# ServiceStack,操作能否返回'IEnumerable<;IWhateverInterface>;`?

C# ServiceStack,操作能否返回'IEnumerable<;IWhateverInterface>;`?,c#,json,serialization,servicestack,C#,Json,Serialization,servicestack,编辑:请注意,我的问题与编辑显示的问题不同。一般来说,我发送IEnumerable或IDictionary没有问题,但在发送它们(包含接口)时有问题 我想知道ServiceStack在序列化或传输接口的IEnumerables时是否存在问题?返回其他对象(如DTO或字符串)的操作不会导致任何问题,但当我尝试返回IEnumerable时,客户端会出现一个空的枚举。在服务内的操作返回所需元素之前,我验证了可枚举元素是否包含所需元素,因此我看到的唯一问题是序列化或发送部分 我确保在所有相关类中引用接口

编辑:请注意,我的问题与编辑显示的问题不同。一般来说,我发送IEnumerable或IDictionary没有问题,但在发送它们(包含接口)时有问题

我想知道ServiceStack在序列化或传输接口的IEnumerables时是否存在问题?返回其他对象(如DTO或字符串)的操作不会导致任何问题,但当我尝试返回
IEnumerable
时,客户端会出现一个空的枚举。在服务内的操作返回所需元素之前,我验证了可枚举元素是否包含所需元素,因此我看到的唯一问题是序列化或发送部分

我确保在所有相关类中引用接口

有人能解释这件事吗


谢谢你,我会让ServiceStack的作者来确认这一点,但我相信序列化程序使用反射来生成传输值。因为您使用的是一个界面,所以没有什么需要反映的

为什么首先要返回接口?你永远不应该嘲笑你的模特儿。@mythz,你能详细解释一下吗?如何将所有内容映射到新的响应DTO中更可取?该接口是一个IPluginAttributeView,我与MEF结合使用。关于如何改进这一点,以及为什么它比我目前做的更好,有什么提示吗?我想学习,并且可以公开承认我是新手,我不是网络程序员,因此不处理视图、模型和视图模型。@myrthz,为什么返回一本词典就可以了?毕竟,它也是一个接口,我觉得发送集合的接口是有充分理由的。对于那些投票关闭的人来说,这个问题是不同的,我发送诸如IEnumerable或IDictionary之类的接口没有问题,而是发送包含诸如IPluginAttributeView(MEF)之类的接口的集合。您没有提供有关您的问题的任何上下文,因此我们无法验证它是什么,但在服务层中返回接口只是一种不好的做法,客户端/序列化程序不知道将其恢复到哪个具体impl中,并且当您有多个具体impl或您希望替换行为时,接口主要使用,这是你不应该为模特做的。我建议退回混凝土POCO或。