這對於F#交互式服務公開的API來說是一個很好的補充!
我想最簡單的解決方法是定義一些集合用於存儲要在通過內部 F#交互會話參數:
let parameters = new System.Collections.Generic.Dictionary<string, obj>()
然後你可以用EvalExpression
得到一個函數,存儲在字典中的值:
(fun k v -> parameters.Add(k, v))
主持人可以那麼返回的對象轉換爲string -> obj -> unit
並用它來設置參數,這將是在c訪問在服務內部運行..
編輯:由於某種原因,我不知道,上述不起作用。但是,您可以將F#函數包裝到.NET代理中,然後它可以正常工作。或者,您可以評估表達式parameters
並取回整個字典(然後您可以直接將值存儲在那裏)。
這爲我做的伎倆:
fsiSession.EvalInteraction
("let env = new System.Collections.Generic.Dictionary<string, obj>()")
fsiSession.EvalExpression
("System.Action<string, obj>(fun k v -> env.Add(k, v))")