返回使用一个参数作为泛型的元组:元组<bool,t =“”> </bool,>

时间:2014-01-28 01:18:44

标签: c# f# c#-to-f#

我正在学习F#,我不知道如何实现这一点。

我有一个界面:

type IRule =
    abstract member Getrule : keyfield:string -> bool * 'T

在C#中:

public interface IRule
{
    Tuple<bool, T> GetRule<T>(string keyFieldIdentifier);
}

我需要创建一个实现此接口的类

C#:

public class CustomRule : IRule
{
    Tuple<bool, T> IRule.GetRule<T>(string keyFieldIdentifier)
    {
        var _result = SomeHelper.CreateResult(keyFieldIdentifier);
        return new Tuple<bool, T>(_result.Item1, (T)(object)_result.Item2);
    }    
}

F#:

type SomeClass() =
    interface IRule with
        member this.Getrule<'T>(keyfield) = 
            let value = 3
            (true, value :> 'T)

我不知道如何编写最后一行(true, value :> 'a),如何转换为泛型类型?

错误说:

错误1来自类型的静态强制     INT
至     “T
 涉及基于此程序点之前的信息的不确定类型。某些类型不允许静态强制。

1 个答案:

答案 0 :(得分:2)

这将编译 - 但我不确定它是否会做你想要的

type SomeClass() =
    interface IRule with
        member this.Getrule<'T>(keyfield):bool * 'T =
            let value = 3
            (true,unbox box value )

特别是这不会进行强制转换,并且可能在运行时失败。