Generics F#与具有泛型返回类型的C#函数互操作

Generics F#与具有泛型返回类型的C#函数互操作,generics,f#,interop,c#-to-f#,Generics,F#,Interop,C# To F#,当我在C#中有一个泛型函数,其中泛型参数仅定义函数的返回类型时,F#似乎无法推断泛型参数。我也不知道如何键入注释 例如,以下C#函数在轻量级ORM中非常常见,如dapper.net和ServiceStack ORM Lite: publictget(字符串sql) { //.... var obj=Activator.CreateInstance(); //.... 返回obj; } 假设我试着在F#中使用这个。。。首先通过类型推断: 让GetCustomer sql:Customer= M

当我在C#中有一个泛型函数,其中泛型参数仅定义函数的返回类型时,F#似乎无法推断泛型参数。我也不知道如何键入注释

例如,以下C#函数在轻量级ORM中非常常见,如dapper.net和ServiceStack ORM Lite:

publictget(字符串sql)
{
//.... 
var obj=Activator.CreateInstance();
//....
返回obj;
}
假设我试着在F#中使用这个。。。首先通过类型推断:

让GetCustomer sql:Customer=
MyCSharpObj.Get(sql)
或者,我尝试注释类型(甚至不确定此语法是否正确):

让GetCustomer sql:Customer=
MyCSharpObj.Get(sql)
在这两种情况下,我都会得到编译错误(在
MyCSharpObj.get
行上):

基于此程序点之前的信息查找不确定类型的对象。在此程序点之前可能需要类型注释来约束对象的类型。这样可以解决查找问题

a如何在F#中使用这种方法?

根据我的评论:

let GetCustomer (sql : string) : Customer = ..

它无法识别的是“sql”类型,而不是返回值。

这有帮助吗?让GetCustomer(sql:string):Customer=…是!这很有效。这很奇怪,因为它正确地将sql推断为字符串。把你的答案贴出来,我接受。