Search code examples
refactoring.net-1.1automatic-properties

How to take advantage of an auto-property when refactoring this .Net 1.1 sample?


I see a lot of legacy .Net 1.1-style code at work like in example below, which I would like to shrink with the help of an auto-property. This will help many classes shrink by 30-40%, which I think would be good.

public int MyIntThingy
{
    get
    {
        return _myIntThingy;
    }

    set
    {
        _myIntThingy = value;
    }
} private int _myIntThingy = -1;

This would become:

public int MyIntThingy
{
    get;
    set;
}

And the only question is - where do I set MyIntThingy = -1;?

If I wrote the class from the start, then I would have a better idea, but I did not. An obvious answer would be: put it in the constructor. Trouble is: there are many constructors in this class. Watching the initialization to -1 in the debugger, I see it happen (I believe) before the constructor gets called. It is almost as if I need to use a static constructor as described here: http://www.c-sharpcorner.com/uploadfile/cupadhyay/staticconstructors11092005061428am/staticconstructors.aspx except that my variables are not static. Java's static initializer comes to mind, but again - my variables are not static. http://www.glenmccl.com/tip_003.htm

I want to make stylistic but not functional changes to this class. As crappy as it is, it has been tested and working for a few years now. breaking the functionality would be bad. So ... I am looking for shorter, sweeter, cuter, and yet EQUIVALENT code. Let me know if you have questions.


Solution

  • I'm afraid that you have no option.

    If you want to use an auto-property with an initial value that differs from the type's default value then you'll need to set the initial value in the constructor(s).