好的,我已将c#
和cpp
放在标签中,但实际上这与任何语言有关。而且它也不是特定于Windows的。
假设我有一个web api,它有一个函数,它将以某种界面描述语言返回所有可能的查询(并不重要)。
现在说我有一个库,它在运行时会在内部执行一些神奇的操作并从api idl调用中获取所有函数并将这些函数注入其中。
这很好,但我没有在ide中获得任何代码,因为它只在运行时发生。
有没有办法拦截有关dll元数据的查询,并将结果替换为api idl调用生成的内容?
我打算在.net中这样做,但我也对其他语言的解决方案感到好奇。
答案 0 :(得分:0)
在Visual Studio中添加对Web服务的引用时,您将获得代码完成 - 但可能您没有使用Visual Studio,或者Web服务不兼容。
我认为您不会解决任何拦截元数据调用的问题 - 您提到该库在运行时获取元数据,这太晚了,所以您也会过晚拦截这些查询。
与Visual Studio解决此问题的方式类似,您可以自己编写一个转换元数据并生成代码的转换器。运行转换器后,您的代码可以针对生成的代码进行编译,而生成的代码会在实际的Web服务调用之下进行编译。
每当服务合同发生变化时,您都可以再次运行转换器,并且您的代码将显示合同已更改的错误。