【发布时间】:2020-07-09 19:02:35
【问题描述】:
我收到这样的警告 如果您知道它是什么,请解释并帮助我摆脱它。 南。
【问题讨论】:
-
INotificationService 是什么样的?
标签: c#
我收到这样的警告 如果您知道它是什么,请解释并帮助我摆脱它。 南。
【问题讨论】:
标签: c#
在您的 AssemblyInfo.cs 文件中,您可能有一行显示
[assembly:CLSCompliant(true)]
如果这样做,则必须满足以下规则。 (从http://www.devarticles.com/c/a/C-Sharp/Making-Your-Code-CLS-Compliant/复制-Pasta)
无符号类型不应该是类的公共接口的一部分。这意味着公共字段不应具有像 uint 或 ulong 这样的无符号类型,公共方法不应返回无符号类型,传递给公共函数的参数不应具有无符号类型。但是,无符号类型可以是私有成员的一部分。
像指针这样的不安全类型不应该与公共成员一起使用。但是它们可以与私有成员一起使用。
类名和成员名不应仅因大小写而异。例如,我们不能有两个名为 MyMethod 和 MYMETHOD 的方法。
只有属性和方法可以重载,运算符不能重载。
【讨论】:
UInt32 和 Int64 的重载,并且类可以提供将四个连续字节转换为 UInt32 的方法,如果它还提供了一个返回与Int64 相同的值。
这是一个老问题,但我认为应该为未来的调查人员(例如我自己)提供更好的解释。
首先,其他答案中的链接提供了有关发出此警告的原因的详细信息。
但是,总而言之,为公共语言运行时(如 C#)编写的代码如果可以与为 CLR 设计的其他语言交互,则它是符合 CLS 的。这意味着特定于语言的某些数据类型不符合整个运行时的通用性。关于变量和方法的快速简便的解决方法是为它们提供可见性修饰符internal,它指定方法、类、属性等在为其构建的程序集之外不可见。这只应在那些您不需要或不想在装配之外使用的项目上进行;对于那些你想要可见的,使用符合 CLS 的数据类型。
【讨论】:
更多信息:
您可以在符合 CLS 的程序集中获得这些警告,这些警告引用不符合 CLS 的程序集(并公开其不符合 CLS 的成员):
【讨论】: