我正在学习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
涉及基于此程序点之前的信息的不确定类型。某些类型不允许静态强制。
答案 0 :(得分:2)
这将编译 - 但我不确定它是否会做你想要的
type SomeClass() =
interface IRule with
member this.Getrule<'T>(keyfield):bool * 'T =
let value = 3
(true,unbox box value )
特别是这不会进行强制转换,并且可能在运行时失败。