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

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

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

反射的基本用法: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();
    }
原文地址:https://www.cnblogs.com/fengxuehuanlin/p/5340580.html