从C#

时间:2019-02-11 14:26:18

标签: c# dll appdomain

我只想从给定的dll加载某些类。 问题如下:

我有以下dll文件。

Dll 1:

命名空间:

  • 第1类
  • 第2类

Dll 2:

命名空间:

  • 第2类
  • 第3类

如上面的示例所示,有可能并且很可能发生我拥有2个甚至更多具有相同类的dll的情况。 (请注意,名称空间相同)

现在我想到了以下几点:

  • 在Temp AppDomain中打开一个dll
  • 检查我们不知道的班级
  • 将所需的类移至标准Appdomain
  • 卸载Temp Appdomain

有什么办法做类似的事情吗?

1 个答案:

答案 0 :(得分:0)

您有两个不同的dll文件。因此,您可以将两个不同的dll文件导入到C#项目中。 例如,第一个dll文件的名称为“ File1”,第二个dll文件的名称为“ File2”

const string file1_Dll_Path = @"File1.dll";
const string file2_DllPath = @"File2.dll";
[DllImport(file2_DllPath, CallingConvention = CallingConvention.Cdecl)]
    public static extern int YOURFUNCTIONINFILE2DLL();
[DllImport(file1_Dll_Path, CallingConvention = CallingConvention.Cdecl)]
    public static extern void YOURFUNCTIONINFILE1DLL();

注意:不要忘记添加“不安全”的C#表单。像这样

unsafe public partial class FORMNAME : Form