是否可以在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}