我想申请:
private string _name;
public string name
{
get { return _name; }
set { _name = Fix(value); }
}
将所有类的成员串起来,并且不希望为所有类成员重复相同的代码。
一个明显的解决方案是将该代码放在一个类来处理问题,并将所有字符串成员声明为:myString
而不是string
,但这意味着我必须访问像这样的主要类成员:email.fixed
而不仅仅是email
。
所以我想知道,是否有某种模板我可以定义然后轻松应用?
答案 0 :(得分:7)
您可以为Visual Studio创建Code Snippet来处理以这种方式构建属性。
MSDN包含Creating a Code Snippet的文档,其中可包含替换参数(名称)。
答案 1 :(得分:2)
您可能希望研究面向方面编程,它可以让您轻松完成这样的操作。
http://www.codeproject.com/Articles/337564/Aspect-Oriented-Programming-Using-Csharp-and-PostS
答案 2 :(得分:0)
创建一个带有string
的隐式转换的类型:
public class FixedString
{
private string str;
public FixedString(string str){this.str = str;}
public static implicit operator FixedString(string str)
{
return new FixedString(Fix(str));
}
public static implicit operator string(FixedString fixed)
{
return fixed.str;
}
}
您现在可以创建此类型的属性,但将其视为字符串。
答案 3 :(得分:0)
创建正则表达式替换并使用Visual Studio(v2012 / 2013)查找并替换正则表达式功能。
例如,假设您有field
这样的内容可以更改为属性
public string Name;
并且您希望将其更改为具有支持字段和所需的设置器。
private string _Name;
public string Name
{
get { return _Name; }
set { _Name = Fix(value); }
}
在Visual Studio中查找/替换正则表达式模式是这个
public\s+string\s([^;]+);
替换模式(具有适当的行间距和制表符)是
private string _$1;\r\n\r\n\tpublic string $1\r\n\t{\r\n\t\tget\r\n\t\t\t{ return _$1; }\r\n\t\tset\r\n\t\t\t{\r\n\t\t\t\t_$1 = Fix(value);\r\n\t\t\t}\r\n\t\t}
然后逐步完成查找并根据需要在班级中进行替换。
我已经完成了类似的操作,在对代码段<tab><tab>prop
操作后创建的空白属性上添加了INotifyChange方法调用。