反射小案例(菜单的可配置化)
刚开始学反射时,只是知道反射可以获取一个类里的各种信息(字段,属性,方法.....)!前面也只是列举了一些反射的基本语法,下面就通过一个简单小案例体会反射的用法:
注:该案例通过控制台程序完成
反射的基本用法: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(); }