2
當我在C#中有一個泛型函數時,泛型參數僅定義函數的返回類型,F#似乎無法推斷泛型參數。我也不知道如何輸入註釋。F#與具有通用返回類型的C#函數進行互操作
例如,下面的C#功能是輕量級的ORM,如dapper.net和ServiceStack-ORM-精簡版非常普遍:
public T Get<T>(string sql)
{
//....
var obj = Activator.CreateInstance<T>();
//....
return obj;
}
讓說,我試着在F#中使用這個......先按類型推斷:
let GetCustomer sql : Customer =
MyCSharpObj.Get(sql)
或者說,我試着註釋類型(甚至不知道這句法是正確的):
let GetCustomer sql : Customer =
MyCSharpObj.Get<Customer>(sql)
在這兩種情況下,我得到的編譯錯誤(在MyCSharpObj.Get
行):根據在此之前的程序點信息上不確定的類型的對象
查找。在此程序點之前可能需要類型註釋來約束對象的類型。這可能會使查找得到解決。
如何在F#中使用這種方法?
這有幫助嗎?讓GetCustomer(sql:string):Customer = ... – Foole
是的!這樣可行。這很奇怪,因爲它正確地將sql推斷爲一個字符串。發佈你的答案並接受不滿。 –