【发布时间】:2010-03-20 08:15:46
【问题描述】:
我正在为一些大型非托管库开发包装器。几乎它的每个函数都可以在内部调用一些错误处理程序。默认错误处理程序将错误写入控制台并调用 abort() 函数。这种行为对于托管库来说是不可取的,所以我想用我自己的替换默认的错误处理程序,它只会抛出一些异常,让程序在处理完这个异常后继续正常执行。在调用任何包装函数之前,必须更改错误处理程序。
包装器库是用托管 c++ 编写的,具有与包装库的静态链接,因此不存在像“具有数百个 dll 导入的类型”这样的东西。我也找不到包装库中所有内容都使用的单一类型。所以我不能通过在一种类型中定义静态构造函数来解决这个问题,它会执行我需要的代码。
我目前看到了两种解决该问题的方法:
定义一些静态方法,如 Library.Initialize(),在其代码使用包装库的任何部分之前必须由客户端调用一次。
找到每个顶级函数使用的最小类型子集(我认为这个子集的大小将类似于 25-50 个类型)并添加调用 Library.Initialize 的静态构造函数(这将在这种情况下是内部的)到每一种类型。
我已经阅读了this 和this 的问题,但它们并没有帮助到我。有没有解决这个问题的适当方法?也许有一些不错的技巧可用?
【问题讨论】:
标签: .net assemblies