gpt4 book ai didi

reflection - 在 F# 中,如何获取函数的参数?

转载 作者:行者123 更新时间:2023-12-03 12:21:29 25 4
gpt4 key购买 nike

给定一个函数列表,如何提取一个列表,其中包含列表中每个函数的第一个参数的类型?

列表定义为:

let messageHandlers = [
fun (message: MessageA) -> (), // Cast
fun (message: MessageB) -> () // Cast
]

类型列表可以定义为:

let getFirstParam x = x.GetType().UseReflectionToGetTheParameters

let types = List.map getFirstParam messageHandlers

我本来希望在 FSharpFunc 上有一个名为 Parameters 或类似名称的列表,但我找不到。

最佳答案

如何改为静态获取类型,以避免出错的风险,如下所示:

let messageHandlers, types =
let withArgType (f: 'T -> unit) = (f :> obj, typeof<'T>)
[
withArgType (fun (param1: MessageA) -> ())
withArgType (fun (param1: MessageB) -> ())
]
|> List.unzip

关于reflection - 在 F# 中,如何获取函数的参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40518885/

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