Przesłanianie pól klasy dziedziczonej

0

Tworzę właśnie prostą kontrolkę, która dziedziczy po klasie UserControl.

Założenie mam takie, że rozmiar mojej kontrolki określany będzie tylko raz - w konstruktorze. Po stworzeniu kontrolki nie będzie już można zmienić jej wielkości. W związku z tym muszę w jakiś sposób przesłonić pola Size, Width, oraz Height z klasy dziedziczonej, tak aby użytkownik nie miał możliwości późniejszej zmiany tych parametrów.

Póki co poradziłem sobie w ten sposób:

 public class TestControl : UserControl
    {
        public new Size Size
        {
            get { return base.Size; }
        }

        public new int Width
        {
            get { return base.Width; }
        }

        public new int Height
        {
            get { return base.Height; }
        }

        // Konstruktor
        public TestControl(int Size)
        {
            base.Size = new Size(Size, Size);
        }

        public void ChangeSize(int Size)
        {
            base.Size = new Size(Size, Size);
        }

    }

Co o tym sądzicie - czy taki zapis jest poprawny? (ciągłe odwoływanie się do base)

Czy może macie inne sugestie?

0

Tak, jest.

0

Zapis poprawny, ale taki kod łamie zasadę LSP ( http://en.wikipedia.org/wiki/Liskov_substitution_principle ).

Nie wiem jak z UserControl, ale dałbym przysiąc, że klasa Form ma możliwość zablokowania zmiany wielkości - być może pochodzi to z UserControl.

1 użytkowników online, w tym zalogowanych: 0, gości: 1