小编tak*_*gen的帖子

使用生成的类型调用MakeGenericTypeDefinition时出现NotSupportedException

我正在尝试在F#中实现一个简单的生成类型提供程序.弹出的一件事是,显然生成一个包含泛型方法调用的引用,其中泛型类型参数被生成的类型替换不受支持.一个演示此行为的简单示例:

首先,定义一个通用方法和一些utils:

module Printer =

    let print (name: string) (value: 'T) =
        printfn "%s: %O" name value

module Provided = 

    let property name propertyType value =
        ProvidedProperty(name, propertyType, GetterCode = (fun _ -> value))

    let ctor () = ProvidedConstructor([], InvokeCode = (fun _ -> <@@ () @@>))
Run Code Online (Sandbox Code Playgroud)

然后,在类型提供程序中,another定义以下简单类型:

let providerTempAssembly = Path.ChangeExtension(Path.GetTempFileName(), ".dll") |> ProvidedAssembly
let provider = ProvidedTypeDefinition(asm, ns, "Provider", Some typeof<obj>, IsErased = false, HideObjectMethods = true)

// Create empty "AnotherType" type with parameterless constructor
let …
Run Code Online (Sandbox Code Playgroud)

f# type-providers

6
推荐指数
0
解决办法
226
查看次数

标签 统计

f# ×1

type-providers ×1