Вопрос относительно общего класса - PullRequest
1 голос
/ 18 марта 2011

У меня есть два следующих класса:

public class A : System.Web.UI.WebControls.Button
    {

        public virtual string X
        {
            get
            {
                object obj = ViewState["X"];
                if (obj != null) return (string)obj;
                return null;
            }

            set
            {
                ViewState["X"] = value;
            }
        }


        protected override void OnLoad(EventArgs e)
        {
            X=2;
        }

    }

и

public class B : System.Web.UI.WebControls.TextBox        {

        public virtual string X
        {
            get
            {
                object obj = ViewState["X"];
                if (obj != null) return (string)obj;
                return null;
            }

            set
            {
                ViewState["X"] = value;
            }
        }


        protected override void OnLoad(EventArgs e)
        {
            X=2;
        }

    }

Поскольку вы, должно быть, видите, что классы A и B имеют абсолютно одинаковый код, мой вопрос состоит в том, как я могу создать для него общий класс и использовать эти два класса.

1 Ответ

1 голос
/ 18 марта 2011

Замена наследования - это композиция.Определите новый класс и вставьте вызовы его методов в A и B. В этом примере это кажется слишком сложным, но вы избежите дублирования кода, если решите заменить ViewState ["X"]

class C { 
        public virtual string X
        {
            get
            {
                return ViewState["X"];
            }
            set
            {
                ViewState["X"] = value;
            }
        }     
        public SetX()
        {
            X=2;
        }
}

РасширениеМетоды тоже хорошая альтернатива.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...