在C#中我可以通过属性帮助自动属性执行一些额外的工作吗?

Ham*_*jan 8 c# custom-attributes automatic-properties

这个问题是相关的,但不一样:你如何给C#Auto-Property一个默认值?

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

private string someName;

public string SomeName
{
    get
    {
       return someName;
    }

    set
    {
        someName = value.Trim();
    }
}
Run Code Online (Sandbox Code Playgroud)

如果我必须多次做同样的事情,我开始希望我不需要输入这么多行/代码的代码.我希望能够拦截值并改变它类似:

public string Somename
{
    get;

    [Trim]
    set;
}
Run Code Online (Sandbox Code Playgroud)

有没有办法做这样的事情?它会是愚蠢的吗?有没有更好的办法?还有其他一般评论吗?我承认,我给出的例子有点假设,我现在找不到确切的代码,这让我想到了这一点.

谢谢.

Jar*_*Par 5

没有办法做到这一点.C#auto属性仅仅是最简单的属性的语法糖,仅此而已.


ang*_*son 5

您可以使用 AOP 来实现,就像使用Postsharp 一样,但是在这种情况下为什么不只使用后备存储?

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

someName = (value ?? string.Empty).Trim();
Run Code Online (Sandbox Code Playgroud)

处理null

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