C#通过反射调用方法

用反射调用方法
常用于软件架构中
假如你定义好了基类和接口,其他人使用基类派生出新的方法,
你在不知道有多少类会使用此基类派生,但是你需要调用所有的派生类的方法时,就可以这样,直接遍历相同命名空间中的由基类派生的所有类,然后实例化所有类,调用所有方法

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Threading;

namespace ReflectMethod
{
    class Program
    {
        private static List<Game> Games = new List<Game>();
        //是否退出
        private static bool isexit = false;

        static void Main(string[] args)
        {

            //获取程序集所有的类
            Type[] types = typeof(Program).Assembly.GetTypes();

            //遍历
            foreach (Type t in types)
            {

                // AttributeLogic(t);
                //如果是Game本身就下一条
                if (t.Name == typeof(Game).Name)
                    continue;
                //判断当前类是否继承Game
                if (typeof(Game).IsAssignableFrom(t))
                {
                    //实例一个Game 子类
                    object reflectTest = Activator.CreateInstance(t);
                    //注意不能用强制转换,只能用as
                    Game g = reflectTest as Game;

                    Games.Add(g);

                }
            }//找到了程序集所有继承Game的子类了并把它们都放在Games列表里边

            foreach (var item in Games)
            {
                item.start();
            }
            Console.ReadKey();

            
        }

      
    }


   
        //一个基类
        abstract class Game
        {
            public virtual void start() { }
            public virtual void updata() { }
        }
        //继承Game
        class Compent : Game
        {


            public override void start()
            {
                Console.WriteLine("my  start");
            }

            public override void updata()
            {
                Console.WriteLine("updata");
            }
        }

    


}
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值