I agree with the assessment that skin initialization should not happen in the constructor of a skin, but only when the skin is actually installed on a control. You already laid out several reasons, but here's another: some skin classes call methods in their constructor as part of skin initialization that are overridden in derived skin classes. This makes it harder to reason about the state of a skin under initialization, since methods in derived classes will be called on a partially constructed object. Adding an install() method and having a clearly defined life-cycle fixes that also.
- Proposal: Add Skin.install() method Andy Goryachev
- Re: Proposal: Add Skin.install() method Jeanette Winzenburg
- Re: Proposal: Add Skin.install() method Andy Goryachev
- Re: Proposal: Add Skin.install() method Jeanette Winzenburg
- Re: Proposal: Add Skin.install() method Michael Strauß
- Re: [External] : Re: Proposal: Add Skin.insta... Andy Goryachev
- Re: Proposal: Add Skin.install() method John Hendrikx
- Re: Proposal: Add Skin.install() method Andy Goryachev
- Re: Proposal: Add Skin.install() method Kevin Rushforth
- Re: Proposal: Add Skin.install() meth... Andy Goryachev
- Re: Proposal: Add Skin.install() method John Hendrikx
- Aw: Re: Proposal: Add Skin.install() ... Marius Hanl
- Re: Aw: Re: Proposal: Add Skin.i... Kevin Rushforth
- Re: Aw: Re: Proposal: Add Sk... Andy Goryachev
- Re: Proposal: Add Skin.install() method Michael Strauß