我使用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# ×1