2
我一直在試驗F#,並認爲,作爲一種學習練習,我可以獲得現有的c#項目並用F#版本逐個替換類。當我嘗試使用F#'class'類型實現泛型C#接口時,我遇到了麻煩。在f#中實現c#接口:無法獲得正確的類型
C#接口
public interface IFoo<T> where T : Thing
{
int DoSomething<T>(T arg);
}
試圖執行F#。我有各種版本,這是最接近(給我的錯誤信息最少的)
type Foo<'T when 'T :> Thing> =
interface IFoo<'T> with
member this.DoSomething<'T>(arg) : int =
45
編譯錯誤我現在得到的是:
成員「DoSomething的<」 T> :'T - > int'沒有正確的 類型來覆蓋相應的抽象方法。所需的 簽名是'DoSomething <'T>:'T0 - > int'。
這讓我感到莫名其妙。什麼是'T0?更重要的是,我如何正確實施這個成員?
更直接的是,您需要提供定義它的泛型參數,而不是它被引用的地方。 – mydogisbox