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