是否可以在c#中使用getter/setter模板?
我想应用这个:是否可以在c#中使用getter/setter模板?,c#,setter,getter,C#,Setter,Getter,我想应用这个: private string _name; public string name { get { return _name; } set { _name = Fix(value); } } 对一个类的所有成员设置字符串,并且不希望对所有类成员重复相同的代码 一个显而易见的解决方案是将该代码放在一个类上以处理问题,并将所有字符串成员声明为:myString而不是string,然而这意味着我必须像这样访问主类成员:email.fixed,而不仅仅是email 所以
private string _name;
public string name
{
get { return _name; }
set { _name = Fix(value); }
}
对一个类的所有成员设置字符串,并且不希望对所有类成员重复相同的代码
一个显而易见的解决方案是将该代码放在一个类上以处理问题,并将所有字符串成员声明为:myString
而不是string
,然而这意味着我必须像这样访问主类成员:email.fixed
,而不仅仅是email
所以我想知道,有什么样的模板我可以定义然后很容易地应用吗?您可以为Visual Studio创建一个模板来处理以这种方式构建属性的问题
MSDN包含关于的文档,其中可以包含替换参数(名称)。您可能希望研究面向方面的编程,它允许您轻松地执行类似操作
创建一个与
字符串进行隐式转换的类型
:
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;
}
}
现在可以创建此类型的属性,但将其视为字符串。创建正则表达式替换并使用Visual Studio(2012/2013版)的查找和替换正则表达式功能 例如,假设您有一个类似这样的
字段
可以更改为属性
public string Name;
你想把它改成一个后场和你想要的二传手
private string _Name;
public string Name
{
get { return _Name; }
set { _Name = Fix(value); }
}
Visual Studio中要查找的查找/替换正则表达式模式如下
public\s+string\s([^;]+);
替换模式(具有适当的行距和制表符)如下所示
然后逐步完成查找,并根据需要在类中进行替换
我在执行代码片段
prop
操作后创建的空白属性上做了类似的添加INotifyChange方法调用。只是想用Coderush指出,这个模板的访问权限是ps->spacebar。也许你可以为你的IDE编写一个附加类。我们说的是作为字段的成员,属性还是两者都有?代码片段对我很有用。我制作了一个版本的propfull来包含对OnPropertyChanged()处理程序的调用。更流畅。提及方面+1。不幸的是,对于可预见的未来,OPs问题的答案是“不”,但您可以通过Aspect做许多非常酷和有用的事情。虽然这是一个非常重量级的解决方案。公平地说,代码片段既不是C语言的特征,也不是通常被称为“模板”的意思。“GeigMeaWER”我实际上考虑了一个代码片段——一个模板——我确实提到它是VisualStudio的一个特性,尽管我的回答中(不是语言)…我重复了你的答案,因为它很有可能回答OP的意思。然而,我在本文中对术语“模板”的理解更类似于宏,我想向OP指出,片段不是这样的。@GeorgeMauer非常正确-这仍然会导致重复代码,但避免重复键入;)我建议安装一个代码段编辑器或创建者,它可以作为VS插件在Tools->Extensions&Updates
中使用。这一过程将创造一个没有痛苦的学习曲线。
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}