サービス コントラクト インターフェイスはまさにそれです。サーバーが受け入れるものと、クライアントが遵守する必要があるものとの間の正式な契約です。このコントラクトは、wsdl の形式で XML にシリアル化されます。そのため、コントラクトに表示されるすべてのデータ型は、XML のシリアル化された形式で表現できる必要があります。
あなたの場合、サービス呼び出しへの引数の数は明確に定義されていません。0、1、2... などの可能性があります。サービス指向のテナントの 1 つは、契約が明示的である必要があることです。ではありません。
最も「慣用的な」アプローチ (サービス指向のコンテキスト内) は次のとおりです。
[ServiceContract]
public interface IRestService {
[OperationContract]
[WebGet(UriTemplate = "operations/{values}")]
void Operations(string[] values);
}
この回答で示唆されているように、クライアント側に構文糖衣を追加したい場合は、キーワードを使用してクライアント側のエクスペリエンスを消化しparams
やすくする拡張メソッドを作成できます。
編集:
Tomが指摘したように、上記のコントラクトは機能しません。操作を POST に変更するか ( Tom's answerで示されているように)、サーバー側で解読して配列を生成する区切り記号の引数文字列を作成する必要があります。
[ServiceContract]
public interface IRestService {
[OperationContract]
[WebGet(UriTemplate = "operations/{delimitedValues}")]
void Operations(string delimitedValues);
}