3

これがWCFサービスです。ユーザーから同時に5つの値を取得し、最初の2つの値の加算をAddidedResultとして、加算された結果と3番目の値をSubtractedResultとして減算し、SubtractedResultと4番目の値をMultipliedResultとして乗算して応答を送信します。乗算結果と5番目の値をDividedResultとして除算します。

私はこれが無意味に見えることを知っていますが、私はこれらを使っていくつかの事前テストをしようとしていますが、私はWCFに不慣れです。

public interface IService1
{

    [OperationContract]
    string GetValuesForCalculation(int value1, int value2, int value3, int value4, int value5);


    // TODO: Add your service operations here
}


public class Service1 : IService1
{

    public int GetValuesForCalculation(int value1, int value2, int value3, int value4, int value5)
    {
        int AddedResult;
        int SubtractedResult;
        int MultipliedResult;
        int DividedResult;

        AddedResult = (value1 + value2);
        SubtractedResult = (AddedResult - value3);
        MultipliedResult = (SubtractedResult - value4);
        DividedResult =(MultipliedResult/value5);

        return AddedResult;
        return SubtractedResult;
        return MultipliedResult;
        return DividedResult;
    }


}

4つの値を同時に返すにはどうすればよいですか?

4

2 に答える 2

7

DataContractを作成してそのオブジェクトを返す必要があります。

[ServiceContract()]
interface IService1
{
    [OperationContract]
    ReturnValue GetValuesForCalculation(int value1, int value2, int value3, int value4, int value5);
}


public class Service1 : IService1
{
    public ReturnValue GetValuesForCalculation(int value1, int value2, int value3, int value4, int value5)
    {
        int AddedResult;
        int SubtractedResult;
        int MultipliedResult;
        int DividedResult;

        AddedResult = (value1 + value2);
        SubtractedResult = (AddedResult - value3);
        MultipliedResult = (SubtractedResult - value4);
        DividedResult =(MultipliedResult/value5);

        var returnValue = new ReturnValue(AddedResult, SubtractedResult, MultipliedResult,DividedResult); 

        return returnValue ;
    }
}

[DataContract]
public class ReturnValue
{
    public ReturnValue(int addedResult, int subtractedResult, int multipliedResult, int dividedResult)
    {
        AddedResult = addedResult;
        SubtractedResult = subtractedResult;
        MultipliedResult = multipliedResult;
        DividedResult = dividedResult;
    }

    [DataMember]
    public int AddedResult {get; set;}

    [DataMember]
    public int SubtractedResult {get; set;}

    [DataMember]
    public int MultipliedResult {get; set;}

    [DataMember]
    public int DividedResult {get; set;}
}

クライアント側では、そのReturnValueクラスは、クライアント プロキシを生成するのと同じコードによって自動的に生成されます (Visual Studio またはsvcutil.exeに組み込まれているツール) 。

のMSDN ページは次のとおりですDataContracts

于 2013-02-06T21:10:16.617 に答える
2

構造体を作成し、それらすべてを同じ呼び出しで返す必要があります。

public class Service1 : IService1
{

public int GetValuesForCalculation(int value1, int value2, int value3, int value4, int value5)
{
    int AddedResult;
    int SubtractedResult;
    int MultipliedResult;
    int DividedResult;

    AddedResult = (value1 + value2);
    SubtractedResult = (AddedResult - value3);
    MultipliedResult = (SubtractedResult - value4);
    DividedResult =(MultipliedResult/value5);

    CallResponse myResponse = new CallREsponse {AddResult = AddedResult, 
                 SubtractResult = SubtractedResult, 
                 MultiplyResult = MultipliedResult, 
                 DivideResult = DividedResult};
    return myResponse;
}


}
public struct CallResponse
{
int AddResult;
    int SubtractResult;
    int MultiplyResult;
    int DivideResult;
}
于 2013-02-06T21:08:48.807 に答える