开发者

Question regarding common class

I have following two classes:

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;
        }

    }

and

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;
        }

    }

As you must be seeing the class A and B have exactly the same code , my question is how can I make a common class for it and use these two classes.


The replacement for inheritance is composition. Define a new class and insert invocations of it's methods in A and B. In this example it seems too complicated, but you will avoid code duplication if you decide to replace ViewState["X"]

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

Extension methods is a good alternative too.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜