我正在尝试改进/自动化一些重复的编程任务。
我有一堆像这样的文件(数百个),有一些像这样的字段声明: (这个只有66个声明)
string _id = string.Empty;
string _itemid = string.Empty;
string _upc = string.Empty;
int? _unitid;
...etc...
然后我必须为每一行生成代码,如下所示:(当然只有第一行)
/// <summary>
/// Allows modification from default value
/// </summary>
/// <param name="id">blah blah</param>
/// <returns>Builder object to allow fluent method chaining</returns>
public ItemBuilder WithId( string id )
{
this._id = id;
return this;
}
一切都是锅炉板,只有两个值可以通过正则表达式宏解析为变量。
类型声明,如string,int? bool,DateTime等。这个可以按原样填入样板代码。
接下来将读取var名称,例如_id,_itemid,_upc等。但不同之处在于需要进行一些操作。
每一行都遵循这种模式。
在C#中写一个片段看起来像这样,但问题在于让每一行都生成。
/// <summary>
/// Allows modification from default value
/// </summary>
/// <param name="$ParmVarName$">Used to assign...to be built with.</param>
/// <returns>Builder object to allow fluent method chaining</returns>
public $BuilderObject$ With$MethodName$( $ParmType$ $ParmVarName$ )
{
this._$ParmVarName$ = $ParmVarName$;
return this;
}
我想将声明(上例中的66)复制到文本编辑器然后运行我的“宏”来生成66个方法然后我可以剪切并粘贴回代码文件。
因此,如果在Visual Studio,Edit Plus Plus,LinqPad等中有某种方法来创建模板,处理字段声明,然后用每行的值填充模板,我将非常有兴趣学习.. ..
请理解我不是要求你做我的作业[但我不会阻止你:)]只是告诉我需要了解的主题/能力。
由于
答案 0 :(得分:1)
您可以使用以下内容进行匹配:
^([^\s]+)\s+_([^\s;]+)?.*
提取/替换为:
public ItemBuilder With$2( $1 $2 )\n{\n\tthis._$2 = $2;\n\treturn this;\n}
请参阅DEMO