2

私は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 ReferenceVSでウィンドウを使用せずにそれを行うにはどうすればよいですか

4

2 に答える 2

1

私の記憶が正しければ、/ ctスイッチはOperationContractレベルのコレクションに影響を与えない可能性があります(状況によっては?)。ラッパーのDataContractタイプを使用してみてください。たとえば、 1つを含むタイプはbool InvokeAlert(InvokeAlertRequest r);どこInvokeAlertRequestになりますか[DataContract][DataMember] List<int> userIds;

于 2013-01-01T21:47:45.270 に答える
0

SvcUtil が DataContractSerializer を使用するプロキシの作成に失敗し、代わりに XmlSerializer を使用する場合、/ct スイッチは動作を停止します。

これはあくまでも推測ですが、これSystem.Data.DataSetが原因である可能性があると思います。

于 2013-01-02T11:46:04.310 に答える