在运行时从C#检测F#记录类型

时间:2017-10-06 14:28:12

标签: c# .net f# system.reflection

有没有办法在没有引用FSharp.Core库的情况下检查C#中运行时对象是否为F#记录类型?

1 个答案:

答案 0 :(得分:7)

记录类型在编译时标有[<CompilationMapping(SourceConstructFlags.RecordType)>]属性。这是FSharpType.IsRecord查找的内容,您可以看到实现here。受歧视的工会以类似的方式得到标记。

可以在不明确引用任何FSharp.Core类型的情况下重新实现该逻辑,即您可以按名称查找属性并拥有自己的SourceConstructFlags枚举副本以匹配属性数据