热门标签 | HotTags
当前位置:  开发笔记 > 开发工具 > 正文

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

如何解决《为什么F#允许不从System.Attribute继承的属性?》经验,为你挑选了1个好方法。

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

namespace Tests

open NUnit.Framework

[]
type TestClass () =

    []
    member this.Setup () =
        ()

    []
    member this.Test1 () =
        Assert.Pass()

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

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

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



1> 小智..:

从历史上看,忘记将检查添加到编译器中.当它被发现时,我建议将其编译错误,但最终会出现向后兼容原因的警告.有关详细信息,请参阅https://github.com/Microsoft/visualfsharp/pull/5192和https://github.com/Microsoft/visualfsharp/pull/5610.


推荐阅读
author-avatar
空灵一_一_379
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有