多态与反射的例子

public partialclass_Default : System.Web.UI.Page

{

    protectedvoidPage_Load(object sender, EventArgse)

    {

       Response.Write("老总讲话:大家请肃静,现在刚好0800整,我们开始开会,请各个部门领导发言:<br/><br/>");

        //定义存放Company类型的实力

        Company[] CArray = new Company[3];

       CArray[0] = new Manager();

       CArray[0].Say("张经理:");

       CArray[0].Foo();

       CArray[1] = new Coder();

       CArray[1].Say("李程序员:");

       CArray[1].Foo();

       CArray[2] = new Accountant();

       CArray[2].Say("钱会计:");

       CArray[2].Foo();

        //Assemblyasm = Assembly.GetExecutingAssembly();

        //Objectobj = asm.CreateInstance("Manaer", true).GetType();

        //objectobj2 = Activator.CreateInstance("null","Manaer");

 

        Type tp = Type.GetType("Coder");  //命名空间.类名

        objectctemp = Activator.CreateInstance(tp);  //通过反射创建类

        MethodInfo mi = tp.GetMethod("Say");//方法的名称

        MethodInfo m2=tp.GetMethod("Foo");

        string[]a = {"反射调用:"};

       mi.Invoke(ctemp, a);

       m2.Invoke(ctemp, null);

       

    }

 

 

 

}

 

    //定义个公司类

    classCompany

    {

        stringName = "";

        publicvirtualvoidSay(string name)

        {

            this.Name= name;

        }

        publicvirtualvoidFoo()

        {

            //Response.Write(Name+ " 公司条例规定,不同岗位的工作人员,干好本职工作!");

            HttpContext.Current.Response.Write(Name + " 公司条例规定,不同岗位的工作人员,干好本职工作!");

        }

    }

    //定义个经理类

    classManager : Company

    {

        stringName = "";

        publicoverridevoidSay(string name)

        {

            //base.Say(name);

            this.Name= name;

        }

        publicoverridevoidFoo()

        {

            HttpContext.Current.Response.Write(Name + " 开早会,给大家分配工作<br/><br/>");

        }

    }

    //定义程序员类

    classCoder : Company

    {

        stringName = "";

        publicoverridevoidSay(string name)

        {

            //base.Say(name);

            this.Name= name;

        }

        publicoverridevoidFoo()

        {

            HttpContext.Current.Response.Write(Name + " 根据经理早会的内容,我开始编写代码了\n\r<br/><br/>");

        }

    }

    //定义财会类

    classAccountant : Company

    {

        stringName = "";

        publicoverridevoidSay(string name)

        {

            //base.Say(name);

            this.Name= name;

        }

        publicoverridevoidFoo()

        {

            HttpContext.Current.Response.Write(Name + " 今天早会提到员工工资的事情了。而今天刚好是开工资的日子,我必须抓紧发工资,让员工好好干活!<br/>");

        }

    }

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值