数组,而不是名单WCF服务代理使用svcutil.exe的生成(Array instead of L

2019-10-17 12:54发布

我有一个ServiceContract

using System.Collections.Generic;
using System.ServiceModel;
namespace MainModule.Sub.Communication
{
    [ServiceContract]
    public interface IWebMethod
    {
        [OperationContract(IsOneWay = false)]
        bool InvokeAlert(List<int> userIds);

        [OperationContract(IsOneWay = false, Name = "InvokeAlertByMainID")]
        bool InvokeAlert(List<int> userIds, int mainId);

        [OperationContract(IsOneWay = true)]
        void DeletePopupNotifications(System.Data.DataSet deletedNotifications);
    }
}

我用下面的命令生成代理(我要做到这一点使用command-line不通过Add Service Reference

SvcUtil.exe http://localhost/MainCommunicationServer/wm  /ct:System.Collections.Generic.List`1 /out:HTTPRouterServerProxy.cs 

即使我添加了ct开关(collectionType)的代理生成它作为阵列( int[] 我如何能做到这一点,而不使用Add Service Reference窗口VS

Answer 1:

如果我没有记错,在/ CT开关可能不会对OperationContract的一级藏品任何影响(在某些情况下?)。 尝试使用包装DataContract类型,例如bool InvokeAlert(InvokeAlertRequest r); 其中InvokeAlertRequest将是[DataContract]含有一种类型的[DataMember] List<int> userIds;



Answer 2:

该/ CT开关停止工作,如果无法SvcUtil工具创建使用DataContractSerializer的和使用XmlSerializer而不是代理。

这只是一个猜测,但我怀疑System.Data.DataSet可能会导致此。



文章来源: Array instead of List in WCF Service Proxy Generated using svcutil.exe