小编Jef*_*yer的帖子

为什么F#允许不从System.Attribute继承的属性?

我使用VS 2019中的模板创建了一个F#'Nunit'项目来进行一些测试,它创建的默认fixture代码如下:

namespace Tests

open NUnit.Framework

[<TestClass>]
type TestClass () =

    [<SetUp>]
    member this.Setup () =
        ()

    [<Test>]
    member this.Test1 () =
        Assert.Pass()
Run Code Online (Sandbox Code Playgroud)

除了对班级宣言的好奇之外,这是一个看起来很普通的班级.我希望看到[<TestFixture>],但我看到[<TestClass>],与自动生成的类型相同.我怀疑这是项目模板中的一个错误,但奇怪的是,F#很乐意编译它,并注意它可能与其他.Net语言不兼容:

warning FS3242: This type does not inherit Attribute, it will not work correctly with other .NET languages.

晶莹剔透.我的问题是,为什么F#甚至允许这样做?.Net中的反射功能是否适用于F#中的这种属性?可能的用例是什么?

f#

8
推荐指数
1
解决办法
177
查看次数

标签 统计

f# ×1