我正在嘗試構建我的第一個類似玩具的類型提供程序。我試圖實現的是動態生成屬性動態生成類型。F#類型提供者 - 嵌套屬性實例化
collection
|> getItems
|> Seq.map(fun mapItem ->
let nestedType = ProvidedTypeDefinition(assembly, ns, "MyNestedType", None)
let ctor = ProvidedConstructor(List.Empty)
nestedType.AddMember ctor
mapItem.Value
|> Seq.map(fun pair ->
ProvidedProperty(fst(pair), typeof<string>,
GetterCode = fun [_] -> <@@ snd(pair) @@>))
|> Seq.toList
|> nestedType.AddMembers
ProvidedProperty(mapItem.Key, nestedType,
GetterCode = fun [map] ->
// ?? Runtime Exception
let inst = nestedType.GetConstructors().[0].Invoke([||])
<@@ inst @@>
))
|> Seq.toList
|> ty.AddMembers
ty
我該如何實例化動態生成的類型?
謝謝,我現在明白擦除類型如何工作。問題是,我不知道類型提供程序編譯時的屬性名稱,所以如果我沒有錯,我只能刪除對象。 – mickl
我試圖達到的目的只有這樣:providedType.dynamically_generated_prop.dynamically_generated_prop_nested,當消費提供者 – mickl