WebAPIコントローラメソッド呼び出し用のクラスを生成するコードを記述しました。私は、生成されたメソッド本体にしようとすると、私はこのように、フォーマット文字列に問題があります。メソッド本体のBlockSyntaxでフォーマットが正しくありません
private static BlockSyntax GetMethodBody(BaseApiMethodInfo methodInfo, string controllerName)
{
var body = new StringBuilder($"var taskCompletion = new TaskCompletionSource<IRestResponse>();{Environment.NewLine}var request = ");
var dataText = methodInfo.Data != null
? methodInfo.Data.Item2.ToString()
: "null";
var methodParameters = $"\"{controllerName}\", \"{methodInfo.Name}\", {dataText}.ToString()";
string httpRequestText;
switch (methodInfo.Method)
{
case Method.GET:
httpRequestText = $"RestSharpExtensions.GetRequest({methodParameters});";
break;
case Method.POST:
httpRequestText = $"RestSharpExtensions.PostRequest({methodParameters});";
break;
case Method.PUT:
httpRequestText = $"RestSharpExtensions.PutRequest({methodParameters});";
break;
case Method.DELETE:
httpRequestText = $"RestSharpExtensions.DeleteRequest({methodParameters});";
break;
default:
throw new ArgumentException("methodInfo.Method");
}
body.AppendLine(httpRequestText + Environment.NewLine);
body.AppendLine($"var handle = Client.ExecuteAsync(request, r => taskCompletion.SetResult(r));{Environment.NewLine}");
body.AppendLine($"var response = await taskCompletion.Task;{Environment.NewLine}");
body.AppendLine($"return JsonConvert.DeserializeObject<{TypesHelper.GetTypeName(methodInfo.ReturnedType)}>(response.Content);");
return Block(ParseStatement(body.ToString()));
}
は、残念ながら、私はこの問題を解決するための任意のポイントを見つけるdid't:
public async Task<String> HttpPost(Boolean isSuccess)
{
var taskCompletion = new TaskCompletionSource<IRestResponse>(); var request = RestSharpExtensions . PostRequest ("Test" , "HttpPost" , isSuccess . ToString ()) ; var handle = Client . ExecuteAsync (request , r => taskCompletion . SetResult (r)) ; var response = await taskCompletion . Task ; return JsonConvert . DeserializeObject <String> (response . Content) ;
}
をこれは、メソッド本体を生成する方法であります問題。これはgithubリポジトリへの参照です。 https://github.com/ddydeveloper/Roslyn.ApiClient.Codegen
誰でもこのような問題がありましたか?
使用して、たとえば。残念ながら、それは私を助けませんでした。 Microsoft.Composition 1.0.27を使用しているため、.NETコアアプリケーションでのMircosoft.CodeAnalysisナゲットパッケージの互換性にも問題がありました。 –