C# 反射
C# 通过反射可以动态加载DLL使用,大大提高灵活性。
实践
- 预先建立一个类库,在内部写一个
cat
类,然后重新生成项目
- 新建一个控制台程序,将类库生成的DLL复制到控制台程序的bin/debug目录。
代码如下:
Hello类库
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| using System;
namespace hello { public class cat { public cat() { Console.WriteLine("初始化Cat"); }
public void miaomiao() { Console.WriteLine("喵喵叫"); } } }
|
控制台程序
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| using System; using System.Reflection;
namespace Learn_more { class Program { static void Main(string[] args) { Assembly assembly = Assembly.Load("hello"); Type type = assembly.GetType("hello.cat"); Object OHello = Activator.CreateInstance(type); MethodInfo methodInfo = type.GetMethod("miaomiao"); methodInfo.Invoke(OHello, null); } } }
|