繁体   English   中英

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

[英]In C# can I make auto-property perform some extra work with a help of an attribute?

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

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

private string someName;

public string SomeName
{
    get
    {
       return someName;
    }

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

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

public string Somename
{
    get;

    [Trim]
    set;
}

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

谢谢。

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

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

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

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

处理null也是如此。

请注意,如果您考虑到涉及更多工作的具体案例,您应该询问该案例,而不是您在问题中所拥有的那些案例。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM