У меня нет опыта работы с этой конкретной библиотекой, но если результат является просто нормальным ExpandoObject
, то нужно сделать следующее:
Прежде всего, ExpandoObject
реализует IDictionary<string, obj>
, так что вы можете привести значение к IDictionary
, а затем добавить или получить членов по своему желанию:
open System.Dynamic
open System.Collections.Generic
let exp = ExpandoObject()
// Adding and getting properties using a dictionary
let d = exp :> IDictionary<string, obj>
d.Add("hi", 123)
d.["hi"]
Если вы хотите использовать синтаксис ?
, вы можете определить ?
сам оператор, действуя точно так же, как указано выше:
let (?) (exp:ExpandoObject) s =
let d = exp :> IDictionary<string, obj>
d.[s]
exp?hi
Тем не менее, если вы можете использовать провайдеров типов, было бы намного проще сделать это с F # Data дляРазбор JSON, потому что тогда вы можете просто заменить все динамические небезопасные ?
доступы проверенными типами!