以编程方式更改代码文件

Car*_*rra 1 .net c# code-generation

我正在将我们的web服务更改为异步模型.为此,我必须改变一百多种方法.

手动执行是一个(没有吸引力的)选项.有没有办法以编程方式解析和更改多个函数/代码文件?

例:

[Webmethod]
public void MyWebservice (string parameter1, string parameter2, string parameter3)
{
  //Logic here
}
Run Code Online (Sandbox Code Playgroud)

并将其更改为:

public void InternalMyWebservice (string parameter1, string parameter2, string parameter3, AsyncCallback callback)
{
  //Logic here
}

[Webmethod]
public void BeginMyWebservice (string parameter1, string parameter2, string parameter3, AsyncCallback callback, object asyncState)
{
  //Queue InternalMyWebservice in a threadpool
}

public void EndMyWebservice(IAsyncResult asyncResult)
{
  //Set return values
}
Run Code Online (Sandbox Code Playgroud)

对于每个Web服务,我必须做的事情基本相同.将名称更改为"InternalX",添加参数并创建开始和结束方法.

Pau*_*erø 5

您应该能够使用该CSharpCodeProvider.Parse方法生成一个CodeCompileUnit实例,该 实例是代码的面向对象表示.有了它,你可以深入到你的方法,更改参数,添加新的方法和东西,当你完成后,你可以将代码保存回文本文件.您通过调用CodeDomProvider.GenerateCodeFromCompileUnit传递修改后的代码生成代码CodeCompileUnit

提供对C#代码生成器和代码编译器实例的访问.