问题标签 [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.
c# - CLS compat 公共属性命名验证例程
我正在开发一个允许动态定义数据类型(仅具有公共属性的类型)的系统(使用反射.emit 进行隐藏),我希望我的新类型也符合 CLS,验证成员名称的验证器会是什么?需要考虑以符合 CLS,我只对函数将验证的内容感兴趣,以确定输入的名称是否正常。
就像是
c# - 如何从使用其他语言的项目中隐藏不符合 CLS 的代码?
这个问题更多是出于好奇,而不是项目要求或问题。
我有一个非 CLS 兼容的代码,用一种语言(比如 C#),我只需要在我当前的语言中使用它(跨项目,所以不能选择内部),同时希望允许其他语言(比如 VB)能够调用冲突的实现而不产生编译时错误。
例如,
问题:我需要通过某种方式从跨语言项目中隐藏我的“打印”方法之一来避免编译时错误(允许 C# 项目调用所需的实现)。
感谢您的关注。
.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 标准库是什么。
c# - C# 4.0 的新特性——“可选参数”是否符合 CLS?
这个新功能真的很方便。
最近我阅读了“Microsoft All-In-One Code Framework”的文档,其中提到“可选参数”不符合 CLS。
所以我在公共 API 中使用“可选参数”对其进行了测试,并打开了 FxCop,然后我编译了 FxCop 并没有抱怨任何事情。同时,当我添加一个以 uint 作为其返回类型的 API 时,FxCop 确实报告了一个警告。
所以现在我很困惑,“可选参数”是否符合 CLS?
确定新语言功能是否符合 CLS 的最佳方法是什么?
c# - 命名 CLS 兼容的替代属性的模式
如果我有这样的财产
并且想写一个替代方案,我不能像我为方法做的那样只写一个重载。但是我该怎么命名呢?.NET 库中有一些通用方法吗?
c# - 符合 CLS 的 ulong 属性替代方案
背景
我正在编写一个托管的 x64 汇编器(它也是一个库),因此它有多个类,这些类定义了一个无符号 64 位整数属性,用作地址和偏移量。有些是文件偏移,有些是绝对地址(相对于主内存),还有一些是相对虚拟地址。
问题
我ulong
在提到的场景中使用属性的数据类型,这很好用。但是,此类属性不符合 CLS。我可以将它们标记为[ClsCompliant(false)]
,但是我需要为图书馆的用户提供符合 CLS 的替代方案。
选项和问题
有些人建议提供具有更大数据类型的替代属性,但这不是一个选项,因为没有更大的有符号整数原语可以保存从0
to 的所有值UInt64.MaxValue
。
我宁愿不将我的整个程序集标记为不符合 CLS,因为在大多数使用场景中,并非所有可能的值UInt64.MaxValue
都被使用。因此,例如,Address
我可以提供一个替代long
属性AddressAlternative
,它只接受正值。Address
但是,当以某种方式包含高于 的值时会发生什么Int64.MaxValue
。应该AddressAlternative
抛出一些异常吗?
什么是合适的名称AddressAlternative
?
为 的每种用法提供替代方案ulong
会导致许多“双重”属性。有一个更好的方法吗?请注意,并非所有ulong
属性的使用都具有相同的语义,因此单个struct
不会削减它。
最后,我在构造函数参数中遇到了同样的 CLS 合规性问题。那么我应该long
为这样的参数提供一个替代的重载接受吗?
我不介意在仅 CLS 的上下文中使用库时限制其(某些功能)的使用,只要它可以在大多数情况下使用即可。
c# - 比较 double.MaxValue 是否相等是个好主意吗?
可以对 float... 或 MinValue 提出相同的问题。
我正在考虑将其用作特殊值。我会因为精度而看到错误吗?我不希望对这些数字进行算术运算,只需设置它们即可。
澄清:我将其用于哨兵价值。
它是在 C# 规范中描述的吗?
c# - 从 WSDL 生成的代理类存在符合 CLS 的错误
我试图从使用 .net 2003 给出的 WSDL 文件生成代理类。当我尝试将此类文件添加到我在 .net 2003 中的项目中时,它在代理类中给出错误,例如“标识符不符合 CLS 的情况代码”
这可能是什么原因造成的?
标识符“FinancialTransactionCard.lifecycleStatus”仅在不符合 CLS 的情况下有所不同
visual-studio - CA1014 使用 VS2010 的 StyleCop 使用 CLSCompliant(true) 错误消息标记“some.dll”
当我运行 StyleCop 时,我收到一条错误消息,提示我需要使用 CLSCompliant(true) 标记 dll。
这是什么?如何使用 CLSCompliant(true) 设置 Mark the dll?
.net - CA1026 -- 如果提供了替代的、符合 CLS 的方法,是否可以抑制此消息?
根据CA1026:不应使用默认参数我不应该使用默认参数。
MSDN 说不要压制消息:
不要禁止来自该规则的警告。
但是,我想知道...如果我包含该方法的 CLSCompliant 变体,我可以禁止显示此消息吗?或者是否有相同方法的两种变体,一种具有所有默认参数,一种为空,会导致问题?
忽略 MSDN 的建议会是一个好的情况吗?我清楚地将方法(构造函数)标记为CLSCompliant(false)
并提供不采用任何默认值的方法(构造函数)。
附注:这似乎是因为:
编译器在访问托管代码时会忽略 C++ 托管扩展的默认参数值。
...所以,我想知道我是否以这种方式编译会导致问题,因为我现在在技术上拥有 2 个可以采用 0 个参数的构造函数?