コードの量を減らすために、私たちのチームは StartProcess メソッドに入れ、単一のメソッドからのすべての呼び出しに対して WCF 実装を呼び出しました。それはすべてうまく機能しますが、ジェネリックメソッドからの実際の呼び出しは System.Action を使用して呼び出すため、値を返すことはできず、呼び出しの 1 つから要求/応答を行いたいので、できますその戻り値を取得します。
WCF 要求を処理する汎用メソッドを次に示します。
public static ProcessResultDC StartProcess<T>(T setupData, string processName, Action<T> action, string exteriorAccountNumber, string companyCode) where T : IAmValidatable, IHaveAProcessGuid {
var result = new ProcessResultDC { Status = ProcessStatusEnum.Accepted };
// Do some authentication stuff here
try {
action(setupData); // <-- This returns void, but I would like to return a string to the client
} catch (Exception exc) {
result.Status = ProcessStatusEnum.Error;
result.Messages.Add(exc.Message);
}
return result;
}
クライアントの呼び出しは次のとおりです。
var createOnDemandDataDc = new CreateOnDemandDataDc { RawData = punchRawData };
var result = TimeForceProcessHelper.StartProcess(createOnDemandDataDc, "Create On Demand Data", x => new CreateOnDemandDataProxy().CreateOnDemandData(createOnDemandDataDc), "NA", companyCode);
私の createOnDemandDataDc 実装は文字列を返しますが、結果変数はアクション呼び出しからの文字列を知る方法がありません。
これを行うより良い方法はありますか?または、戻り文字列を取得するために Action() 呼び出し以外のことをすることはできますか?