C# 反射

C# 通过反射可以动态加载DLL使用,大大提高灵活性。

实践

  1. 预先建立一个类库,在内部写一个cat类,然后重新生成项目
  2. 新建一个控制台程序,将类库生成的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);
}
}
}