我正在尝试构建我的第一个类似玩具的类型提供程序。我试图实现的是动态生成属性动态生成类型。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