オブジェクト データ型を使用する代わりに、カスタム リクエスト オブジェクトを使用することをお勧めします。そのリクエスト オブジェクト クラスは、クライアントとサーバーの両方で共通である必要があります。クライアント側では、リクエストを入力して、サーバーから必要な結果を取得するだけです。
ソリューション階層は次のようにすることをお勧めします。
namespace ServerProj
{
using System.ServiceModel;
using Common;
[ServiceContract]
public interface IRCommService
{
[OperationContract]
Result SendMessage(string command, CustomRequest data);
}
}
namespace ServerProj
{
using System.Collections.Generic;
using Common;
public class RCommService : IRCommService
{
public Result SendMessage(string command, CustomRequest data)
{ // You can get the value from here
int value = data.MyValue;
Result result = new Result();
List<string> list = new List<string>();
list.Add("Sample");
result.Rsults = list;
return result;
}
}
}
Common アセンブリの要求クラス
namespace Common
{
using System.Runtime.Serialization;
[DataContract]
public class CustomRequest
{
[DataMember]
public int MyValue { get; set; }
}
}
Common アセンブリの応答クラス
namespace Common
{
using System.Collections.Generic;
using System.Runtime.Serialization;
[DataContract]
public class Result
{
[DataMember]
public List<string> Rsults { get; set; }
}
}
次に、クライアント側でサービス参照として追加します。
private void button1_Click(object sender, EventArgs e)
{
ServiceReference1.RCommServiceClient service = new ServiceReference1.RCommServiceClient();
CustomRequest customRequest=new CustomRequest();
customRequest.MyValue = 10;
Result result = service.SendMessage("Test", customRequest);
}