反射小案例(菜单的可配置化)

刚开始学反射时,只是知道反射可以获取一个类里的各种信息(字段,属性,方法.....)!前面也只是列举了一些反射的基本语法,下面就通过一个简单小案例体会反射的用法:

注:该案例通过控制台程序完成

反射的基本用法:http://www.cnblogs.com/fengxuehuanlin/p/5274607.html

用的的类库:

  调用的主方法:

注:由于是在主方法中调用类库,所以要引用类库这个程序集

控制台程序部分:

 class Program
    {
        static void Main(string[] args)
        {
            Assembly ass = Assembly.Load("EnumAssembly");    //获取类库下的所有类,这里要引用EnumAssembly这个类库,不然加载不到类库程序集
            Type[] types= ass.GetTypes();
            foreach (Type type in types)     //遍历每一个类
            {
                if (!(type.Name).StartsWith("I"))  //去掉接口类型
                {
                    MethodInfo method= type.GetMethod("GetFoodName");  //反射获取水果名方法
                    object obj = Activator.CreateInstance(type);
                    Console.WriteLine(method.Invoke(obj, null));
                }
            }
            Console.ReadKey();
        }
    }

类库:

    public class Banana:IFood
    {
        private const string FOODNAME = "香蕉";

        public string GetFoodName()
        {
            return FOODNAME;
        }
    }
    public class Apple : IFood
    {
        private const string FOODNAME = "苹果";

        public string GetFoodName()
        {
            return FOODNAME;
        }
    }

只需在这里添加一个类,并实现下面这个接口!就可以在主方法中动态的显示该内容

接口:

 interface IFood
    {
        string GetFoodName();
    }
时间: 2024-10-06 06:03:39

反射小案例(菜单的可配置化)的相关文章

跟王老师学反射(九):反射应用小案例--进行对象拷贝

跟王老师学反射(九):反射应用小案例--进行对象拷贝 学习内容 一.需求 二.参考代码 (一)Customer:标准JavaBean (二)方法编写 来自为知笔记(Wiz)

Windows Server之浅谈SMB以及SMB小案例分享

SMB由来 服务器消息区块(英语:Server Message Block,缩写为SMB,服务器消息区块),又称网络文件共享系统(英语:Common Internet File System,缩写为CIFS),一种应用层网络传输协议,由微软开发,主要功能是使网络上的机器能够计算机文件.打印机.串行端口和通讯等资源.它也提供经认证的进程间通信机能.它主要用在装有Microsoft Windows的机器上,在这样的机器上被称为Microsoft Windows Network. SMB版本 OS W

4.10/4.11/4.12 lvm讲解 4.13 磁盘故障小案例

4.10/4.11/4.12 lvm讲解 4.13 磁盘故障小案例 4.10/4.11/4.12 lvm讲解 lvm讲解 4.10 lvm讲解上 安装下lvm 如果忘记了 lvm包 pvdisplay 查看 4.11 lvm 中 查看物理卷 除了pvdisplay命令还有一个 pvs命令也可以直观查看当前的物理卷 有了物理卷之后再来创建卷组 先用俩个物理卷创建一个卷组 vgcreate vg1 /dev/sdb1 /dev/sdb2 可以查看下卷组vgdiskplay 或者 vgs vgremo

android闹钟小案例之知识点总结

上一篇文章对近期做的小闹钟做了功能阐述,现在来总结下整个开发过程中所用到的一些知识点: 1.TimePicker的监听 TimePicker控件是整个应用的核心,其它的操作都得基于对该控件的正确操控.对该控件的操作重要就是为其设置监听器,在监听事件中获取用户设置的时间. private Calendar calendar=Calendar.getInstance();//创建calendar对象 private class OnTimeChangedListenerImpl implements

Hibernate映射多对多双向关联关系(小案例)

多对多双向关联关系(Project(工程)/Emp(员工)为案例): 步骤如下: 1.创建Project类,并需要定义集合类型的Emp属性 public class Project { //编号 private Integer pid; //名称 private String pname; //定义集合类型的Emp属性 private Set<Emp> emps=new HashSet<Emp>(); public Integer getPid() { return pid; }

02SpringMvc_springmvc快速入门小案例(XML版本)

这篇文章中,我们要写一个入门案例,去整体了解整个SpringMVC. 先给出整个项目的结构图: 第一步:创建springmvc-day01这么一个web应用 第二步:导入springioc,springweb , springmvc相关的jar包 第三步:在/WEB-INF/下创建web.xml文件 <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.

四周第一次课(1月2日) 4.10/lvm讲解 4.11/lvm讲解 4.12/lvm讲解 4.13 磁盘故障小案例

四周第一次课(1月2日)4.10/lvm讲解4.11/lvm讲解4.12/lvm讲解4.13 磁盘故障小案例 onnecting to 192.168.183.128:22...Connection established.To escape to local shell, press 'Ctrl+Alt+]'. Last login: Tue Jan 2 19:34:17 2018[[email protected] ~]# ip add1: lo: <LOOPBACK,UP,LOWER_UP

十(4)iptables语法、iptables filter表小案例、iptables nat表应用

                                    iptables语法 filter表: INPUT链:作用于进入本机的包 OUTPUT链:作用于送出本机的包 FORWARD链:作用于和本机无关的包 nat表: PREROUTING链:作用是包在刚刚到达防火墙时改变包的目标地址 OUTPUT链:改变本地产生的包的目标地址 POSTROUTING链:作用是在包将离开防火墙时改变包源地址 1.查看iptables规则 iptables -nvL  (此时默认查看filter表,

广播小案例-监听系统网络状态 --Android开发

本例通过广播实现简单的监听系统网络状态改变的小案例. 1.案例效果演示 当手机连网后,系统提示“已连接网络”, 当手机断网后,系统提示“当前网络不可用1”. 2.案例实现 在主活动中动态注册广播,然后写一个内部类来接收系统广播,下面是相关文件的核心代码: MainActivity.java: public class MainActivity extends AppCompatActivity { private IntentFilter intentFilter; private Networ