简体   繁体   中英

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

This question is related but not the same as this: How do you give a C# Auto-Property a default value?

I love auto-properties, but sometimes I have to do something like this:

private string someName;

public string SomeName
{
    get
    {
       return someName;
    }

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

If I have to do the same thing many times, I start wishing that I did not need to type so many lines/characters of code. I want to be able to intercept the value and change it sort of like so:

public string Somename
{
    get;

    [Trim]
    set;
}

Is there a way to do something like this? Would it be stupid? Is there a better way? Any other general comments? I admit, the example I gave is a bit hypothetical and I cannot locate the exact code now which made me think of this.

Thanks.

No there is not a way to do this. C# auto properties are meant to be syntactic sugar for only the most trivial of properties and nothing more.

You can do it using AOP, like with Postsharp , but why aren't you just using a backing store in this case?

Also, for completeness, you should probably do this:

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

to handle null as well.

Note that if you have a specific case in mind where there is more work involved, you should probably ask about that case, and not the trivial one you have in your question

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

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