9

这个问题与此相关但不同:How do you give a C# Auto-Property a default value?

我喜欢自动属性,但有时我必须这样做:

private string someName;

public string SomeName
{
    get
    {
       return someName;
    }

    set
    {
        someName = value.Trim();
    }
}

如果我必须多次做同样的事情,我开始希望我不需要输入这么多行/字符的代码。我希望能够拦截该值并像这样更改它:

public string Somename
{
    get;

    [Trim]
    set;
}

有没有办法做这样的事情?会不会很傻?有没有更好的办法?还有其他一般性意见吗?我承认,我给出的示例有点假设,我现在无法找到让我想到这一点的确切代码。

谢谢。

4

2 回答 2

5

不,没有办法做到这一点。C# 自动属性只是最琐碎的属性的语法糖,仅此而已。

于 2010-06-03T22:30:06.430 回答
5

您可以使用 AOP 来做到这一点,就像使用Postsharp一样,但是在这种情况下,您为什么不直接使用后备存储呢?

此外,为了完整起见,您可能应该这样做:

someName = (value ?? string.Empty).Trim();

处理null为好。

请注意,如果您有一个涉及更多工作的特定案例,您可能应该询问该案例,而不是您的问题中的琐碎案例

于 2010-06-03T22:31:51.330 回答