如果类是个泛型类的话dllImport 代码不能编译

你可能需要在dllImport代码中使用泛型类。但是你知道下面的代码段能通过编译么?

1 open System.Runtime.InteropServices
2  
3 type B<'T>() = 
4     member this.F() = ()
5  
6 module A = 
7     ["aa")>]
8 extern void AA(B<int> a)

答案是否定的。

注意最后一行将抛出一个错误:Unexpected type application  in extern declaration. Expected ')' or other token.

你可能会说“aa”不是一个有效的dll 名字。但是这不重要。如果dll 名字是有效的,同样会有相同的编译问题。编译器给我们这个错误是因为在这种情况下泛型类将不会被编译,尽管这个错误信息有点模棱两可。

这是个当前不会去修复的问题。

转载于:https://www.cnblogs.com/tryfsharp/archive/2012/06/08/2542088.html

你可能感兴趣的:(如果类是个泛型类的话dllImport 代码不能编译)