在运行时从 C# 检测 F# 记录类型
Detecting F# record type from C# at runtime
有没有办法在 C# 运行时检查对象是否为 F# 记录类型而不引用 FSharp.Core 库?
记录类型在编译时用 [<CompilationMapping(SourceConstructFlags.RecordType)>]
属性标记。这就是 FSharpType.IsRecord
寻找的内容,您可以查看实现 here。被歧视的工会以类似的方式得到标记。
可以在不显式引用任何 FSharp.Core
类型的情况下重新实现该逻辑,即您可以按名称查找属性并拥有自己的 SourceConstructFlags
枚举副本以匹配属性数据。
有没有办法在 C# 运行时检查对象是否为 F# 记录类型而不引用 FSharp.Core 库?
记录类型在编译时用 [<CompilationMapping(SourceConstructFlags.RecordType)>]
属性标记。这就是 FSharpType.IsRecord
寻找的内容,您可以查看实现 here。被歧视的工会以类似的方式得到标记。
可以在不显式引用任何 FSharp.Core
类型的情况下重新实现该逻辑,即您可以按名称查找属性并拥有自己的 SourceConstructFlags
枚举副本以匹配属性数据。