wcf返回数组即使collection type == gen generic.list也是列表



我的项目是一个wcf服务(.svc),看起来如下:

[ServiceContract]
public interface IAdminQueries
{
    [OperationContract]
    List<Color> GetColors();
    [OperationContract]
    List<PhoneType> GetPhoneTypes();
    ...

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

i然后通过以下代码构建并获取错误:

    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项目转换为VS2010。我正在使用的许多功能,但必须降级。无论如何,VS 2012中的参考文献之一是newtonsoft.json。我在几个地方使用它。当我在VS 2010中将其取出并重建时,一切都起作用了。现在,我需要进行更多测试,以查看可以用于JSON序列化而不是Newtonsoft的方法。

有什么建议?

答案在我的原始帖子中升起,称为fix。但是我也可以在这里发布。

这一切之所以开始,是因为我必须将VS 2012项目转换为VS2010。我使用的很棒的功能,但必须降级。无论如何,VS 2012中的参考文献之一是newtonsoft.json。我在几个地方使用它。当我在VS 2010中将其取出并重建时,一切都起作用了。现在,我需要进行更多测试,以查看可以用于JSON序列化而不是Newtonsoft的方法。

在您添加服务参考的客户端中,右键单击服务参考,然后选择"配置服务参考",在数据类型的部分下,它应该列出" System.Array"对于收集类型(因为这是针对非 - .NET客户端兼容性发出的默认值)。在此领域,您可以将其更改为默认情况下发出通用列表,而不是数组。

相关内容

最新更新