编辑:添加了一个更完整的示例,它澄清了问题。
某些 .NET 属性需要类型为 的参数Type
。如何在 F# 中声明这些参数?
例如,在 C# 中,我们可以这样做:
[XmlInclude(typeof(Car))]
[XmlInclude(typeof(Truck))]
class Vehicle { }
class Car : Vehicle { }
class Truck : Vehicle { }
但是,在 F# 中,以下...
[<XmlInclude(typeof<Car>)>]
[<XmlInclude(typeof<Truck>)>]
type Vehicle() = class end
type Car() = inherit Vehicle()
type Truck() = inherit Car()
...导致编译器错误:这不是常量表达式或有效的自定义属性值。