F# 在F中创建记录类型#

F# 在F中创建记录类型#,f#,type-providers,F#,Type Providers,我想根据提供的字段创建一个简单的记录类型 即: let rectype = MakeRecordType(['fieldname1'; 'fieldname2']) 对于这样一个简单的任务,直接访问类型提供程序看起来像是一种强大的力量 还有别的办法吗 更新 我发现下面的问题看起来很相似 抛开最终结果的有用性不谈,下面的一个片段正好满足了您的要求: 演示纯合成类型myType的概念验证: IsRecordType=true Record fields: [|System.String Field

我想根据提供的字段创建一个简单的记录类型

即:

let rectype = MakeRecordType(['fieldname1'; 'fieldname2'])
对于这样一个简单的任务,直接访问类型提供程序看起来像是一种强大的力量

还有别的办法吗

更新

我发现下面的问题看起来很相似

抛开最终结果的有用性不谈,下面的一个片段正好满足了您的要求:

演示纯合成类型
myType
的概念验证:

IsRecordType=true
Record fields: [|System.String Field1; Int32 Field2|]

我不明白,你会如何使用一个动态创建的记录类型?与之相反:
typemyrecord={field1:string,field2:string}
@yamen我使用它的方式与任何其他类型几乎相同。我的意思是-如果您提供了一个动态属性列表,那么您是动态地还是静态地使用它们?如果是静态的,为什么不首先静态地定义它。我动态地使用它,因为我连接的数据没有模式。。。不幸的是!只要使用
字典
就可以了。很酷。不过我还是很饿,我在2005年的csharp中也做了同样的花式裤子技巧来获取动态linq查询。7年后,我们几乎在同一个地方创建wrt可组合类型…@nicolas:F#和C#是静态类型语言。运行时类型创建不是直接的或内置的,这是有原因的。@ildjam实际上静态/动态类型的概念是不完整的。在世卫组织眼中,我们需要说静态/动态。所以这两个概念本身就有很多漏洞。@ildjarn你完全正确,但这是一个真理。我很惊讶这个(方便的)静态类型的神话在现实的方向上发展得如此之少。
let myType = RecordTypeMaker("Test", [|("Field1", "string"); ("Field2", "int")|]).RecordType
printfn "IsRecordType=%b" (FSharpType.IsRecord(myType))
printfn "Record fields: %A" (FSharpType.GetRecordFields(myType))
IsRecordType=true
Record fields: [|System.String Field1; Int32 Field2|]