问题标签 [cls-compliant]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
117 浏览

c# - CLS compat 公共属性命名验证例程

我正在开发一个允许动态定义数据类型(仅具有公共属性的类型)的系统(使用反射.emit 进行隐藏),我希望我的新类型也符合 CLS,验证成员名称的验证器会是什么?需要考虑以符合 CLS,我只对函数将验证的内容感兴趣,以确定输入的名称是否正常。

就像是

0 投票
3 回答
404 浏览

c# - 如何从使用其他语言的项目中隐藏不符合 CLS 的代码?

这个问题更多是出于好奇,而不是项目要求或问题。

我有一个非 CLS 兼容的代码,用一种语言(比如 C#),我只需要在我当前的语言中使用它(跨项目,所以不能选择内部),同时希望允许其他语言(比如 VB)能够调用冲突的实现而不产生编译时错误。

例如,

问题:我需要通过某种方式从跨语言项目中隐藏我的“打印”方法之一来避免编译时错误(允许 C# 项目调用所需的实现)。

感谢您的关注。

0 投票
2 回答
218 浏览

.net - BCL 与 CLS 有何关系?

一些 .net 理论问题:哪些库实际上是标准化的?我知道有一个通用类型系统,它指定了诸如 32 位整数和所有这些低级信息之类的东西,但我对通用语言规范和基类库的状态/关系感到困惑。

系统中有一些基本类型:System.Object、System.ValueType、System.Exception。但是像 System.String 和它的方法/属性(如 .Length、.StartsWith 或 string.IsNullOrEmpty)呢?

这些是任何标准的一部分吗?ECMA-335 是否足以实现符合 CLS 的 .net 运行时?

PS:我知道人们日常使用的许多功能并不符合标准,而是微软专有的 .net 框架实现的一部分。这与在某些不受支持的操作系统下运行现有应用程序无关,我会为此考虑 Mono。这确实是一个关于什么是.net 核心的理论问题,.net 标准库是什么。

0 投票
3 回答
1806 浏览

c# - C# 4.0 的新特性——“可选参数”是否符合 CLS?

这个新功能真的很方便。

最近我阅读了“Microsoft All-In-One Code Framework”的文档,其中提到“可选参数”不符合 CLS。

所以我在公共 API 中使用“可选参数”对其进行了测试,并打开了 FxCop,然后我编译了 FxCop 并没有抱怨任何事情。同时,当我添加一个以 uint 作为其返回类型的 API 时,FxCop 确实报告了一个警告。

所以现在我很困惑,“可选参数”是否符合 CLS?

确定新语言功能是否符合 CLS 的最佳方法是什么?

0 投票
3 回答
114 浏览

c# - 命名 CLS 兼容的替代属性的模式

如果我有这样的财产

并且想写一个替代方案,我不能像我为方法做的那样只写一个重载。但是我该怎么命名呢?.NET 库中有一些通用方法吗?

0 投票
2 回答
2252 浏览

c# - 符合 CLS 的 ulong 属性替代方案

背景

我正在编写一个托管的 x64 汇编器(它也是一个库),因此它有多个类,这些类定义了一个无符号 64 位整数属性,用作地址和偏移量。有些是文件偏移,有些是绝对地址(相对于主内存),还有一些是相对虚拟地址。

问题

ulong在提到的场景中使用属性的数据类型,这很好用。但是,此类属性不符合 CLS。我可以将它们标记为[ClsCompliant(false)],但是我需要为图书馆的用户提供符合 CLS 的替代方案。

选项和问题

有些人建议提供具有更大数据类型的替代属性,但这不是一个选项,因为没有更大的有符号整数原语可以保存从0to 的所有值UInt64.MaxValue

我宁愿不将我的整个程序集标记为不符合 CLS,因为在大多数使用场景中,并非所有可能的值UInt64.MaxValue都被使用。因此,例如,Address我可以提供一个替代long属性AddressAlternative,它只接受正值。Address但是,当以某种方式包含高于 的值时会发生什么Int64.MaxValue。应该AddressAlternative抛出一些异常吗?

什么是合适的名称AddressAlternative

为 的每种用法提供替代方案ulong会导致许多“双重”属性。有一个更好的方法吗?请注意,并非所有ulong属性的使用都具有相同的语义,因此单个struct不会削减它。

最后,我在构造函数参数中遇到了同样的 CLS 合规性问题。那么我应该long为这样的参数提供一个替代的重载接受吗?

我不介意在仅 CLS 的上下文中使用库时限制其(某些功能)的使用,只要它可以在大多数情况下使用即可。

0 投票
5 回答
2810 浏览

c# - 比较 double.MaxValue 是否相等是个好主意吗?

可以对 float... 或 MinValue 提出相同的问题。

我正在考虑将其用作特殊值。我会因为精度而看到错误吗?我不希望对这些数字进行算术运算,只需设置它们即可。

澄清:我将其用于哨兵价值。

它是在 C# 规范中描述的吗?

0 投票
1 回答
552 浏览

c# - 从 WSDL 生成的代理类存在符合 CLS 的错误

我试图从使用 .net 2003 给出的 WSDL 文件生成代理类。当我尝试将此类文件添加到我在 .net 2003 中的项目中时,它在代理类中给出错误,例如“标识符不符合 CLS 的情况代码”

这可能是什么原因造成的?

标识符“FinancialTransactionCard.lifecycleStatus”仅在不符合 CLS 的情况下有所不同

0 投票
2 回答
9709 浏览

visual-studio - CA1014 使用 VS2010 的 StyleCop 使用 CLSCompliant(true) 错误消息标记“some.dll”

当我运行 StyleCop 时,我收到一条错误消息,提示我需要使用 CLSCompliant(true) 标记 dll。

这是什么?如何使用 CLSCompliant(true) 设置 Mark the dll?

0 投票
1 回答
2114 浏览

.net - CA1026 -- 如果提供了替代的、符合 CLS 的方法,是否可以抑制此消息?

根据CA1026:不应使用默认参数我不应该使用默认参数。

MSDN 说不要压制消息:

不要禁止来自该规则的警告。

但是,我想知道...如果我包含该方法的 CLSCompliant 变体,我可以禁止显示此消息吗?或者是否有相同方法的两种变体,一种具有所有默认参数,一种为空,会导致问题?

忽略 MSDN 的建议会是一个好的情况吗?我清楚地将方法(构造函数)标记为CLSCompliant(false)并提供不采用任何默认值的方法(构造函数)。


附注:这似乎是因为:

编译器在访问托管代码时会忽略 C++ 托管扩展的默认参数值。

...所以,我想知道我是否以这种方式编译会导致问题,因为我现在在技术上拥有 2 个可以采用 0 个参数的构造函数?