如何以编程方式将属性插入.cs源文件中的类?

Lou*_*hys 5 .net c# regex string code-generation

我正在创建一个自动化工具,用于将属性插入到现有类的源代码中.例如,我有一个像这样的现有源代码:

public class MyClass 
{
   //class members goes here

}
Run Code Online (Sandbox Code Playgroud)

我想修改它变成这样

public class MyClass 
{
   //class members goes here

   public string MyProp { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

并将其保存到同一个文件中.

类名,属性类型和属性名称将事先知道,并且可以被视为操作的参数.知道如何轻松做到这一点吗?也许正则表达式替换将适用于此,但我不知道使用哪个表达式将是灵活的,无论源代码的新行,空格和标识策略.

编辑:我正在寻找的只是自动生成源代码,而不是在运行时操作类

Ern*_*rno 5

一种干净的方法是使用T4模板生成部分类.

T4模板是在编译时生成代码的好方法.

开发人员不应修改这些生成的文件,而是开发人员创建另一个文件,其中包含部分类成员的其他定义.

这样你就可以一次又一次地调整和运行生成器而不会弄乱自定义代码.


Tal*_*ner 2

用于在运行时添加

程序集无法在运行时更改,因此您需要在运行时生成 DLL 并加载它,或者您可以使用 ExpandoObject,如此问题中所述

用于在编译时添加

如果您不想在运行时添加代码,那么您正在寻找CodeDom