Search code examples
c#custom-attributesautomatic-properties

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.


Solution

  • 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