你可能需要在dllImport代码中使用泛型类。但是你知道下面的代码段能通过编译么?
open System.Runtime.InteropServices
type B<'T>() =
member this.F() = ()
module A =
[<DllImport("aa")>]
externvoid AA(B<int> a)
答案是否定的。
注意最后一行将抛出一个错误:Unexpectedtype application in extern declaration.Expected ')' or other token.
你可能会说“aa”不是一个有效的dll 名字。但是这不重要。如果dll名字是有效的,同样会有相同的编译问题。编译器给我们这个错误是因为在这种情况下泛型类将不会被编译,尽管这个错误信息有点模棱两可。
这是个当前不会去修复的问题。