gpt4 book ai didi

c# - 使用 CodeMemberMethod 创建异步方法

转载 作者:行者123 更新时间:2023-11-30 22:02:41 24 4
gpt4 key购买 nike

如何使用 CodeDom.CodeMemberMethodasync 装饰方法签名?

我想要的结果是:

public async Task SomeMethodAsync()
{
}

在 CodeDom 中无法做到这一点。我最终使用了 regex

 public static class GenCodeParser
{
private const string AsyncKeyWordPattern = @"(?<=public class DynamicClass(\r\n)*\s*{(\r\n)*\s*public)(?=.*\s*SomeMethodAsync{1})";
private const string AsyncKeyWordReplacementPattern = @" async ";

public static string AddAsyncKeyWordToMethodDeclaration(string sourceCode)
{
if (string.IsNullOrWhiteSpace(sourceCode)) return null;

try
{
var regex = new Regex(AsyncKeyWordPattern);
return regex.Replace(sourceCode, AsyncKeyWordReplacementPattern);
}
catch
{
return null;
}
}
}

最佳答案

CodeDOM 对async 一无所知,因此无法直接将其添加到您的方法中。但它对允许您编写的内容也相当宽松。

因此,您可以做的是编写一个返回类型为async Task 的方法。当然,这不是一个有效的类型,但如果您将该字符串写入返回类型通常所在的位置,您就会得到想要的。

例如:

new CodeMemberMethod
{ Name = "M", ReturnType = new CodeTypeReference("async Task") }

编译成:

private async Task M() {
}

关于c# - 使用 CodeMemberMethod 创建异步方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26638003/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com