这个DEMO的主要功能是:
1.从外部打开某个DLL,并列出该DLL里一共有多少个类;
2.列出某个类里有多少个可执行的公开方法;
3.执行某个方法,会显示执行的返回结果,前提是该方法具有返回值;
4.把从外部打开的DLL转换成C#可用的代码,方便大家存入内存;
5.从内存里读取已经存入内存的程序集,并且执行它的某个类的方法;
下面我们看看项目的VS结构:

我们假设AssemblyTest这个类库是存放我们注册验证的地方,AssemblyWPFDemo就是我们的主程序,一般来说,我们如果要用到AssemblyTest类库的功能时,肯定要由主程序先引用该类库,才能使用这个类库的功能,这里面就存在一个问题,只要引用了类库,在本地就会生成该类库对应的DLL,这个就暴露了我们的代码,下面的过程就是解释,如何在不引用的情况下使用该类库的功能。
AssemblyTest类库情况:
有两个测试类,和一个WPF窗体。
AssemblyTest1
namespace AssemblyTest
{
public class AssemblyTest1
{
public string AssemblyTest1GetString()
{
return "这是Assembly1";
}
}
}
{
public class AssemblyTest1
{
public string AssemblyTest1GetString()
{
return "这是Assembly1";
}
}
}
AssemblyTest2
namespace AssemblyTest
{
public class AssemblyTest2
{
public string AssemblyTest2GetString()
{
return "这是Assembly2";
}
}
}
{
public class AssemblyTest2
{
public string AssemblyTest2GetString()
{
return "这是Assembly2";
}
}
}
WPF窗体预览

这个窗体就是上面DEMO图里弹出的那个窗口。
下面我们看看主要代码是怎么实现的,在这之前你们可能得去了解C# Assembly的应用,里面我只写一些简单的注释,大家自行去看: