Object Creation and Instantiation


In this article I am trying an alternative approach for Multiple Inheritance.

In C sharp Multiple Inheritance is not possible to achieve this is well known. i.e. You cannot inherit from two classes.

Program : ClassA , ClassB // This cannot be achieved
{

}

So lets try an alternative approach where we can leverage the advantages of Multiple Inheritance . Please note that I have not used Reflection in this example , that is not the scope of this article .


Consider ClassA and ClassB as the two classes whose functionality we need to access .

  class ClassA
    {
        public string member { get; set; }
        public ClassA()
        {
            Console.WriteLine("A constructor is called");
            member = "Member of ClassA";
        }
        public void display()
        {
            Console.WriteLine("Display A");
        }
    }

class ClassB
    {
        public string member { get; set; }
        public ClassB()
        {
            Console.WriteLine("B constructor is called");
            member = "Member of ClassB";
        }
        public void display()
        {
            Console.WriteLine("Display B");
        }
    }

Creating a Router :


Let us create a Router Interface .

   interface IRouter
    {
        void display(string param);
    }



The Router class looks as follows :

class Router : IRouter
    {
        public string member { get; set; }

         public Router(string param)
        {
            if (param == "A")
            {
                new ClassA();
                member = new ClassA().member;
            }
            else if (param == "B")
            {
                new ClassB();
                member = new ClassB().member;
            }
        }

        public void display(string param)
        {
            if (param == "A")
            {
                new ClassA().display();
            }
            else if (param == "B")
            {
                new ClassB().display();
            }
        }
    }

  class Program
    {
        static void Main(string[] args)
        {
            IRouter router = new Router("A");
            router.display("B");
            Console.Read();
        }
    }



The following output is displayed :

routers

Conclusion

This is a simple Router which routes the method calls to Respective classes based on the User Input. Hopefully it would be useful. Thanks .


Similar Articles