zoukankan      html  css  js  c++  java
  • 反射小案例(菜单的可配置化)

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

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

    反射的基本用法: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();
        }
  • 相关阅读:
    我要把铁路修到威斯特摩兰
    1新建空白jasperreport模板
    oracle权限
    swagger配置
    lombok插件基本使用
    oracle与sqlserver的区别
    yaml语法学习
    第一个SpringBoot
    spring多环境切换
    JSR303数据校验
  • 原文地址:https://www.cnblogs.com/fengxuehuanlin/p/5340580.html
Copyright © 2011-2022 走看看