多个吸气剂和二传手

时间:2013-12-05 07:46:55

标签: c#

如何为getter和setter创建多个处理程序,而不是为每个字段编写相同的代码。我知道它有一些设计模式。

public class TestClass
{
    private string _firstName;
    private string _lastName;
    private string _personDescription;
    private string _other;

    public TestClass() { }

    //same for lastName, personDescription, other
    public string FirstName
    {
        get
        {
            return _firstName;
        }
        set
        {
            _firstName = FixValue(value);
        }
    }

    private string FixValue(string value)
    {
        value = value.Trim();
        if (value == string.Empty)
        {
            return null;
        }

        return value;
    }
}

2 个答案:

答案 0 :(得分:3)

这样做的一种可能方法是Aspect Oriented Programming

基本上,您创建了一个方面来定义在编译时注入代码的自定义功能。

此类库的示例是PostSharp。看一下PostSharp教程Property and Field Interception

在您的情况下,您需要实施OnSetValue方法,您可以在其中添加自定义代码。然后添加您在属性上方创建的属性。

答案 1 :(得分:0)

有一个名为propfullpropgprop的默认代码段(至少在visual studio 2010中)。但您仍然需要输入名称和数据类型。您可以复制粘贴代码段并修改它以在集合上调用自定义方法。

要自动生成属性,您还可以右键单击 变量,点击重构,然后点击封装字段 。输入propertyname或使用默认值。 点击确定两次或输入。