使用svcutil.exe为不同(非默认)集合类型生成代理

时间:2011-05-03 12:56:25

标签: wcf command-line proxy svcutil.exe

我正在尝试通过命令行为wcf服务生成代理。根据需要,我使用 * svcutil.exe

我需要为这些服务创建代理服务。示例命令如下所示。关于代理的生成,一切都在嗡嗡作响。

对于其中一个代理,我需要将Collection类型作为List而不是默认的Array。但是,如下面明确提到的那样,我无法使集合类型正确。生成的代理仍具有集合的Array类型。执行这些命令时没有错误。不知道到底发生了什么。

svcutil.exe  http://localhost/DealService.svc /noLogo               
/out:D:/Proxies/DealServiceReference.cs /n:*,MyApp.WinUI.DealServiceReference 
/ct:System.Collections.Generic.List`1

有谁知道,为什么我会得到默认的收集类型,尽管有明确的提及?有谁知道怎么做对吗?

(Subquestion - 我看到的所有将collectiontype定义为列表的例子,神秘的`1 出现在System.Collections.Generic.List的末尾,但我无法理解它的需要,我都无法在某个地方得到有效的解释。所以,如果有人能够对此有所了解,那就太棒了。)

2 个答案:

答案 0 :(得分:0)

您应该使用该开关获取DataMember类中的T类型列表。要进行故障排除,请尝试通过为该服务添加服务引用来创建代理,并configuring the collection settings as shown here.如果使用预期的List of T创建服务引用,则WSDL很好。如果没有,可能是SvcUtil不允许将集合序列化/反序列化为T列表。

答案 1 :(得分:0)

注意: -

如果作为参数提供的名称相同,

svcutil.exe将覆盖磁盘上的现有文件。这可以包括代码文件,配置或元数据文件。要在生成代码和配置文件时避免这种情况,请使用/mergeConfig开关。 此外,引用类型的/r/ct开关用于生成数据协定。使用XmlSerializer时,这些开关不起作用。

参考:https://msdn.microsoft.com/en-us/library/aa347733(v=vs.110).aspx

这可能是您的情况,请查看使用的Serializer ...