gpt4 book ai didi

c# - F# 中的 Func 属性

转载 作者:太空狗 更新时间:2023-10-29 20:13:38 25 4
gpt4 key购买 nike

我目前正在与 F# 中的 C# 代码进行互操作。

是否可以在 F# 中定义一个在 C# 中如下所示的属性?


private Func<PropertyInfo, bool> OnIsSatisfiedByProperty { get; set; }

(在 F# 中它不必是 Func<T, TResult> 而是等价的东西。)

最佳答案

如果您需要与来自 C# 的类型互操作,您肯定希望它是 Func<T>而不是 FSharpFunc其中有额外的元数据,例如非 null规定 [正如我之前的评论和@John Palmer 的回答一样]。因此,您可以使用对象初始化器初始化的最短的类似实际等效项是:

type MyType()=
member val public OnIsSatisfiedByProperty : Func<PropertyInfo,bool> = null with get,set

或者你可以走以下路线:

type MyType()=
[<DefaultValue()>]val mutable OnIsSatisfiedByProperty : Func<System.Reflection.PropertyInfo,bool>

但我的快速困惑让我需要在这种情况下实现显式设置/获取方法。

(顺便说一句,我知道这个答案只是因为巧合的是几分钟前,fixture.Inject( fun () -> !value) 的工作方式与 fixture.Inject<Func<MyValue>>( fun () -> !value) 不同!)

关于c# - F# 中的 Func<T, TResult> 属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20325425/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com