c# - 从 C# 中的 dll 加载特定类

标签 c# dll appdomain

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

我有以下dll文件。

Dll 1:

命名空间:

  • 1 级
  • 2 级

Dll 2:

命名空间:

  • 2 级
  • 3 级

如上例所示,我有可能并且很可能有 2 个或什至更多的 dll 包含相同的类。 (注意命名空间是一样的)

现在我想到了以下几点:

  • 在 Temp AppDomain 中打开一个 dll
  • 检查我们不知道哪些类
  • 将需要的类移动到标准 Appdomain
  • 卸载临时应用域

有什么办法可以做到这一点吗?

最佳答案

您有两个不同的 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

关于c# - 从 C# 中的 dll 加载特定类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54632701/

相关文章:

c# - 通用/类型安全的 ICommand 实现?

php - 是否可以从 PHP 网页上的 DLL 调用方法?

c# - 当一个对象从 MarshalByRefObject 派生并且也被标记为 [Serializable] 时会发生什么?

c# - MarshalByRefObject 生命周期

c# - 如何在 Android Image Gallery 中保存从 unity 拍摄的照片?

c# - 如何在 C# 中逐行读取 PDF 文件?

c# - 如何检测用户何时切换到登录屏幕?

c++ - Dllmain 可以使用 FreeLibrary 吗?

visual-c++ - 即使在项目属性中进行更改后也会出现错误 Please #define _AFXDLL or do not use/MD[d]

C# 程序集在子域中创建实例