是否可以通過Reflection來傳遞F#函數?是否有可能通過Reflection來傳遞F#函數?
(*in module A*)
type Foo() =
static member bar n = {1..n}
let functionUsingFoobar (x:(int -> #('a seq)) n =
let z = BarFoo.ofSeq (x n)
z.count
(* in module B
here is where I want to pass Foo.bar by reflection*)
let y = functionUsingFoobar Foo.bar 1000
我無法調用沒有args參數的成員,所以通過InvokeMember的部分函數應用程序無法工作。
let foo = new Foo()
let z = foo.GetType().InvokeMember("bar", System.Reflection.BindingFlags.InvokeMethod, null, foo, [|1000|])
(*tried null, [||], [|null|] for args parameter*)
我的想法如何通過反射
我不明白你怎麼第二個代碼示例連接到第一個 - 什麼是seqIntAsc? – kvb
糟糕 - 謝謝你指出。更正爲「酒吧」。第二個代碼示例調用Foo類型的「bar」成員,這不是我想要做的。我懷疑像部分函數那樣傳遞函數是不可能的。 –
什麼是實際_problem_?你有編譯器錯誤還是運行時錯誤? – ildjarn