代码之家  ›  专栏  ›  技术社区  ›  okutane

在程序集加载时执行代码

  •  3
  • okutane  · 技术社区  · 15 年前


    包装库是用托管c++编写的,与包装库有静态链接,因此没有什么比“具有数百个dll导入的类型”更适合的了。我也找不到一个单独的类型,它被包装库中的所有东西使用。所以我不能通过在一个类型中定义静态构造函数来解决这个问题,它将执行我需要的代码。

    我现在看到了两种解决这个问题的方法:

    1. 找到每个顶级函数使用的类型的最小子集(我认为这个子集的大小大约是25-50个类型),并为每个类型添加调用Library.Initialize的静态构造函数(在该场景中是内部的)。

    我读过 this this 问题,但没有帮助我。有什么合适的方法来解决这个问题吗?也许有一些不错的黑客?

    3 回复  |  直到 8 年前
        1
  •  1
  •   Venr    15 年前

    其他一些建议:

    1. 创建一个抽象基类作为所有包装类的根,并将initialize调用放入基类的构造函数中。
        2
  •  0
  •   Matthew Flaschen    15 年前

    我认为你的选择2更好。如果您将调用包含在一些额外的类型中,那么就这样做吧。当然,如果已经调用了Library.initialize纾困,您将拥有它。

        3
  •  0
  •   hugoware    15 年前

    可能有点麻烦,但是您可以创建自己的包装类,它只公开您想要的函数。在每个函数中,您都可以执行错误处理。