思想
-
主要是运用C#反射原理,以一个新的项目作为中间键,加载原有项目的函数和方法,启动CAD时调用中间键的dll,中间键的dll将原有项目的dll加载进来。实现调试功能。这样在CAD开发过程中很方便,就不用老是重启CAD软件了,电脑慢的话,启用CAD软件需要很多时间。
-
代码如下,已经注释好了。
public class Class1
{
private Action cmd1;
//构造函数执行一次Reload函数
public Class1()
{
Reload();
}
[CommandMethod("reload1")]
public void Reload()
{
//获取输出程序集的位置
FileInfo adaterFileInfo =new FileInfo(Assembly.GetExecutingAssembly().Location);
//将这两个程序集组成成一个路径
string targetFilePath = Path.Combine(adaterFileInfo.DirectoryName, "test01.dll");
//存到内存里,防止文件被锁住
var targetAssembly = Assembly.Load(File.ReadAllBytes(targetFilePath));
//得到另外一个项目的类型
Type targetType = targetAssembly.GetType("test01.Class1");
//得到另外一个项目的方法
var targetMethod = targetType.GetMethod("HelloWorld");
//获取一个实例
var targetObject= Activator.CreateInstance(targetType);
//使用当前参数执行实例的方法 Lam表达式。
cmd1=() =>targetMethod.Invoke(targetObject, null);
}
[CommandMethod("cmd1")]
public void Cmd1()
{
cmd1?.Invoke();
}
}