上的警告我正在开发一个具有StreamSocket类的公共属性和方法参数的UWP库。但是,我得到“StreamSocket不符合CLS”的警告。那里有什么特别的地方,微软决定离开各自的程序集非CLS兼容,并且在使用/分发这个库时是否存在我应该知道的任何潜在问题?也许CLS incompliance会以某种方式限制我的库可以被其他开发者使用的方式?获取“参数类型'StreamSocket'不符合CLS”构建
-1
A
回答
2
好了,从文档:
如果你设计一个符合CLS的类库,您的库将具有互操作性的保障具有广泛的编程语言;因此,您的库可能拥有比不符合CLS的版本更广泛的客户群。
所以[显而易见的]答案是他们在编码时没有考虑到“编程语言的互操作性”。
我并不感到惊讶,说实话,MS是不完全闻名严格
在这里阅读更多(IE人?):https://msdn.microsoft.com/en-us/library/bhc3fa7f.aspx
UPDATE:
我会尽量不再神秘这一点基于评论。
CLS(通用语言规范)定义了支持任何针对.NET Framework的语言的功能。因此,如果你的库将被.NET语言使用,你应该只关心它。
例如,CLS中有一个限制,即类和成员名称不能仅凭大小写不同。您不能有一个名为MySocket的属性,另一个名为mySocket。这对VB.NET等不区分大小写的语言很重要。
在这种情况下,您的库正在暴露未标记为符合CLS的StreamSocket。如果这个类有类似上述示例的方法,并且您尝试在某个VB.NET项目中使用您的库,该怎么办?这是编译器警告你的。
相关问题
- 1. 参数类型'FluentNHibernate.Mapping.IProperty'不符合CLS
- 2. .NET Framework:参数类型'uint'在P/Invoke上不符合CLS
- 3. 参数类型不符合CLS,为什么?
- 4. 类型的成员是不符合CLS
- 5. LINQ to SQL类不符合CLS?
- 6. Sympy符号和cls参数
- 7. 参数类型NSURL不符合
- 8. 获取无参数类型
- 9. 获取Scala类型的类型参数
- 10. 获取的参数类型的参数
- 11. “数组作为属性参数是不符合CLS”的警告,但没有给出类型信息
- 12. 参数类型“[?字符串]”不符合预期型“AnyObject”
- 13. 参数类型'[MGLPointAnnotation]'不符合期望的类型'MGLAnnotation'
- 14. 为什么这些类型参数不符合类型细化?
- 15. 参数类型'Int'不符合期望的类型'NSCoding&NSCopying&NSObjectProtocol'
- 16. 构建参数数据类型
- 17. 类型参数不符合特质减去的的类型参数界限
- 18. 类型参数不符合特性Bar的类型参数边界
- 19. Xtext:如何从JvmTypeReference获取集合类型参数(泛型)?
- 20. 提取:推断类型参数X不符合方法不应用的类型参数界限
- 21. 如何获取泛型方法参数的类型参数类?
- 22. 获取java.util.Map的泛型类型参数
- 23. 获取类的构造函数参数
- 24. 如何从StreamSocket获取流
- 25. 参考名称的情况是不符合CLS
- 26. 使用枚举是不符合CLS
- 27. 为什么我的课不符合CLS?
- 28. 为什么这不符合CLS?
- 29. 为什么unsigned int不符合CLS?
- 30. 构造函数:从参数列表中获取类型列表
呃...但CLS遵从性与UWP有什么关系?它不像普通型系统是UWP的核心。这只是众多预测中的一个。 – IInspectable
@IInspectable所以在UWP世界里,在我的库的公共API中使用CLS不兼容的代码是非常正常的(假设MS做的和没有人关心)? – Alex
@亚历克斯:我不知道。我只是不明白,为什么遵守一个不相关的类型系统是必需的或可取的。你可以将任何**非CLS兼容类型投影到任何.NET投影中,这让我感到困惑。 – IInspectable