我想知道是否有一种方法可以减少处理从 F# 返回到 C# 的选项类型的麻烦。例如:
var result = TheOneCache.Get<Dictionary<Guid, MembershipUser>>(TheOneCache.EntryType.SQL, USERNAME_DICTIONARY);
if (FSharpOption<Dictionary<Guid, MembershipUser>>.get_IsSome(result))
{
result.Value.Remove(membershipid);
}
我很乐意不必提供 <Dictionary<Guid, MembershipUser>>
每次。有什么办法可以改善这种情况吗?
最佳答案
@MiMo 在评论中为我指出了正确的方向。如果其他人遇到此问题,请使用 jaredpar' blog 中的以下技巧将为您包装这些调用,以便您只需调用 FSharpOption.isSome(x)
public static class FSharpOption {
public static FSharpOption<T> Create<T>(T value) {
return new FSharpOption<T>(value);
}
public static bool IsSome<T>(this FSharpOption<T> opt) {
return FSharpOption<T>.get_IsSome(opt);
}
public static bool IsNone<T>(this FSharpOption<T> opt) {
return FSharpOption<T>.get_IsNone(opt);
}
}
关于f# - 在 C# 中使用 F# 选项。例如FSharpOption<字典<Guid, MembershipUser>>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35163327/