WCF返回数组而不是列表甚至收集类型== Generic.List

时间:2012-11-08 21:24:56

标签: .net wcf

我的项目是WCF服务(.svc),如下所示:

[ServiceContract]
public interface IAdminQueries
{

    [OperationContract]
    List<Color> GetColors();

    [OperationContract]
    List<PhoneType> GetPhoneTypes();

    ...

我有另一个项目是Web应用程序。我在上述服务中添加了服务参考。单击“高级”按钮,然后从“集合类型”中选择“Generic.List”。一切似乎都应该如此。

然后我使用以下代码构建并获取错误:

    AdminQueriesClient db = new AdminQueriesClient();
    List<Color> s = db.GetColors();

这是错误:

    Cannot implicitly convert type 'DogLicenseBO.DogLicenseServiceReference.Color[]' to 'System.Collections.Generic.List<DogLicenseBO.DogLicenseServiceReference.Color>'

阻塞或覆盖正常序列化/反序列化过程的东西是什么?

修改 我让它再次运作。但是,我认为我需要我拿出来的东西。

修复 这一切都是因为我必须将VS 2012项目转换为VS 2010.我使用的很多功能但必须降级。无论如何,VS 2012中的一个参考文献是Newtonsoft.Json。我在几个地方使用它。当我在VS 2010中完成并重建时,一切正常。现在我需要更多测试来查看我可以用于Json序列化而不是Newtonsoft。

有什么建议吗?

2 个答案:

答案 0 :(得分:1)

在编辑修复后,答案在我原来的帖子中。但我也可以在这里发布它。

这一切都是因为我必须将VS 2012项目转换为VS 2010.我使用的很多功能但必须降级。无论如何,VS 2012中的一个参考文献是Newtonsoft.Json。我在几个地方使用它。当我在VS 2010中完成并重建时,一切正常。现在我需要更多测试来查看我可以用于Json序列化而不是Newtonsoft。

答案 1 :(得分:0)

在已添加服务引用的客户端中,右键单击服务引用并选择“配置服务引用”,在数据类型部分下,它应列出“System.Array”的集合类型(因为这是为非.NET客户端兼容性发出的默认值)。在此区域中,您可以将其更改为默认情况下发出通用列表而不是数组。