Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/340.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在C#中,我可以让auto属性在属性的帮助下执行一些额外的工作吗?_C#_Custom Attributes_Automatic Properties - Fatal编程技术网

在C#中,我可以让auto属性在属性的帮助下执行一些额外的工作吗?

在C#中,我可以让auto属性在属性的帮助下执行一些额外的工作吗?,c#,custom-attributes,automatic-properties,C#,Custom Attributes,Automatic Properties,此问题与此相关,但与此不同: 我喜欢汽车属性,但有时我不得不这样做: private string someName; public string SomeName { get { return someName; } set { someName = value.Trim(); } } 如果我不得不多次做同样的事情,我开始希望我不需要键入那么多行/字符的代码。我希望能够截取该值并对其进行类似的更改: publi

此问题与此相关,但与此不同:

我喜欢汽车属性,但有时我不得不这样做:

private string someName;

public string SomeName
{
    get
    {
       return someName;
    }

    set
    {
        someName = value.Trim();
    }
}
如果我不得不多次做同样的事情,我开始希望我不需要键入那么多行/字符的代码。我希望能够截取该值并对其进行类似的更改:

public string Somename
{
    get;

    [Trim]
    set;
}
有没有办法做到这一点?这会很愚蠢吗?有更好的办法吗?还有其他一般性意见吗?我承认,我给出的例子有点假设,我现在找不到确切的代码,这让我想到了这一点


谢谢。

不,没有办法做到这一点。C#auto属性只是最微不足道的属性的语法糖,仅此而已

您可以使用AOP来完成,就像使用一样,但在这种情况下为什么不使用备份存储呢

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

someName = (value ?? string.Empty).Trim();
也可以处理
null


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

谢谢,Microsoft没有为面向方面的编程提供自己的解决方案吗?在一定程度上,使用其上下文绑定对象,但对于大多数AOP实现来说,这并不是一个很好的解决方案。如今,IL-weaver在这方面做得更好,可以处理任何类型的对象,而使用Microsoft方法,您必须从一个公共类继承。等等,“IL-weaver”是将语法糖扩展为不同代码的东西?它是否类似于使用try/finally,代码契约魔术?我认为IL-weaver中的bug有点难以追踪,因为它可能会混淆调试器。是的,它就是这样做的。它可以在编译时或运行时分离IL,添加更多代码,然后重新组装。通常情况下,虽然他们会相应地修改调试信息,但我在使用Postsharp进行调试时从未遇到任何问题。但是是的,这是一个你需要管理的风险。