有没有办法在DLL中自动运行一些代码?

本文关键字:运行 代码 DLL 有没有 | 更新日期: 2023-09-27 18:09:04

我有一些来自第三方的DLL,我需要许可。它有一些方法,我必须从我自己的DLL调用。我的DLL在几个项目中被引用,我不想对每个主机进行更改。我可以在我的DLL中使用任何方法来调用DLL中的一些方法吗?比如添加一些静态类或构造函数,但不从宿主显式调用该类?我不确定我是否解释清楚了。如有需要,请提问。

ThirdPartyType license = new ThirdPartyType();
license.Load("license.xml");

这是一段许可代码,我想放在我的DLL中,并在同一个DLL中调用它。

有没有办法在DLL中自动运行一些代码?

在底层,运行时支持"模块初始化器"。然而,c#没有提供任何实现它们的方法,所以你能管理的最接近的是一个静态构造函数("类型初始化器")或只是一个普通的构造函数。

然而,将许可连接到模块初始化器或类型初始化器中可能是个坏主意,因为您不知道它们何时运行,并且它可能影响不打算访问lib的代码。因为你的许可代码决定它不高兴而把别人的应用撤下,这有点令人皱眉——特别是如果你的库当时没有被积极调用。

这样:我建议这样做的最合适的地方是在构造函数中,或者在构建后的Initialize(...)方法中(除非提供有效的详细信息,否则工具拒绝工作)。