当前位置:  开发笔记 > 编程语言 > 正文

.NET中的'CLSCompliant'属性是什么?

如何解决《.NET中的'CLSCompliant'属性是什么?》经验,为你挑选了5个好方法。

CLSCompliant属性是什么?



1> Otávio Décio..:

如果要确保可以由任何其他.NET语言使用,请使用CLSCompliant属性标记类.这些是基本规则:

    无符号类型不应该是类的公共接口的一部分.这意味着公共字段不应该有uint或ulong等无符号类型,公共方法不应该返回无符号类型,传递给公共函数的参数不应该有无符号类型.但是,无符号类型可以是私有成员的一部分.

    指针等不安全类型不应与公共成员一起使用.但是,它们可以与私人成员一起使用.

    类名和成员名不应仅根据具体情况而有所不同.例如,我们不能有两个名为MyMethod和MYMETHOD的方法.

    只有属性和方法可能会重载,操作符不应该重载.


不一定,主要是那些可能接触过其他.net语言的人.

2> Jon Skeet..:

它告诉其他消费者您的代码是否符合CLS,并且还使C#编译器检查它是否符合CLS.

引用的文章包含有关CLS合规性所需的更多详细信息.


因此,如果我添加属性然后构建我的项目没有抱怨,这意味着我的项目符合CLS并且一切都很好?

3> 小智..:

其他答案都是正确的.让我澄清一些事情--CLS代表公共语言规范.它是.NET语言必须实现和理解的最小规则集和所需的语言功能.该集合是公共类型系统的子集,它定义了如何在.NET中定义类型.

符合CLS意味着您可以编写可以在CLR上编译和运行的任何语言使用的代码.但是不需要CLS合规性,在CLS合规难以或不可能的情况下为您提供灵活性.

如果您希望您的代码被其他开发人员使用,那么您的API(您的公共类和方法)应该符合CLS.您应该通过将CLSCompliantAttribute添加到程序集来声明这一点.如果您不是为他人写作,则不需要CLS合规,尽管FxCop(Framework Cop)会不同意我的看法.

当您的程序集标记有CLSCompliantAttribute时,编译器将(应该!)检查您的代码,以查看在编译时是否会违反任何CLS规则(其中一些提及ocdecio)并向您报告违规行为以进行修复.



4> JaredPar..:

符合CLS是CLR允许的完整语言频谱的子集.它将其限制为可能由目标CLR的大多数语言可用的子集.这增加了但不保证您的库可以被所有针对CLR的语言使用.



5> Markus Hartm..:

适用于此处:要标记整个项目符合CLS,请将此行添加到AssemblyInfo.cs(可在"解决方案资源管理器"中的"属性"下找到)

[assembly:CLSCompliant(true)]

或等效于VB.NET(AssemblyInfo.vb隐藏在My Project下)


感谢您使您的代码符合CLS标准.

推荐阅读
Gbom2402851125
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有