C# 解决方案赢得';不要构建,因为它可以';t从服务生成类型转换为我的类型
我有一个WCF服务项目,它构建良好,生成可访问的WSDL,并且svcutil.exe不会生成任何错误 我有一个访问该web服务的“服务管理器”项目,我已经成功地向其中添加了一个服务引用ABCService 第三个项目保存了我需要来回传递的所有POCO对象——用[DataContract]和[DataMember]属性进行了大量修饰 当我尝试构建解决方案时,我看到ABCService的Reference.cs有如下方法(为了简洁起见,我用(…)代替了完整的名称空间): 第一个方法返回一个东西,效果很好,但每个MyCollection方法都有一个错误: 错误16参数1:无法从“(…).MyCollection”转换为“(…).myCollectionOfThing0mj5ZrAW” 我的收藏课装饰得和你想象的一样:C# 解决方案赢得';不要构建,因为它可以';t从服务生成类型转换为我的类型,c#,web-services,wcf,C#,Web Services,Wcf,我有一个WCF服务项目,它构建良好,生成可访问的WSDL,并且svcutil.exe不会生成任何错误 我有一个访问该web服务的“服务管理器”项目,我已经成功地向其中添加了一个服务引用ABCService 第三个项目保存了我需要来回传递的所有POCO对象——用[DataContract]和[DataMember]属性进行了大量修饰 当我尝试构建解决方案时,我看到ABCService的Reference.cs有如下方法(为了简洁起见,我用(…)代替了完整的名称空间): 第一个方法返回一个东西,效果
[CollectionDataContract]
public class MyCollection<T> : List<T> where T : BaseType
{
// ...
}
要装饰我的收藏类,我会收到相同的错误,但名称已更新:
错误12参数1:无法从“(…).myCollection”转换
到“(…).myCollectionThing”
编辑2:
尽管已选中“引用程序集中的重用类型”,但仍选择了“指定引用程序集”的单选按钮,并选中了我的POCO程序集旁边的框:
…仍在使用唯一的类名生成服务引用:
正如@vesan和@RitchMelton在评论中所建议的那样,类型似乎是在客户端重新生成的,您应该重用
数据契约
如果要添加服务引用,请通过在所有引用程序集中选择单选“重用类型”,重用引用程序集中的类型:
还要注意,您可能需要将集合类型更改为System.collection.Generic.List
,以防止将列表更改为数组/
如果使用svcuti生成代理,则需要使用/reference:
在生成引用时重用DataContract
程序集,如:
svcutil /reference:YourDLL.dll http://localhost/YourService?wsdl
有关使用SvcUtil
的/reference
的更多详细信息,请参阅:
运行svcuti时,是否使用了
/reference
参数将其指向数据协定类中的DLL?听起来工具正在生成类型。您是否已选中“所有引用程序集中的重用类型”?@RitchMelton我肯定已选中“重用类型”,并且我已选择程序集。。。虽然我在导入我的程序集的第二个版本时遇到了问题,但如何确保它引用了正确的版本?版本可能有问题吗?@vesan我不这么认为-我明天会尝试。您是否从bin
或debug
文件夹添加引用?请参阅编辑2-尽管按照您的描述进行了配置,服务引用仍在生成唯一的类。
[CollectionDataContract(Name= "myCollection{0}", ItemName = "{0}")]
svcutil /reference:YourDLL.dll http://localhost/YourService?wsdl