.net “作为特性参数的数组不符合CLS”警告,但未给出类型信息

mjqavswn  于 2023-02-26  发布在  .NET
关注(0)|答案(3)|浏览(131)

在编译我的解决方案时,我收到以下几个警告:
警告CS3016:作为属性参数的数组不符合CLS
没有给出关于什么类型不兼容的其他信息。在我的项目中,我有一些属性在它们的构造函数中接受params数组参数,但它们都是内部的,这不应该影响CLS兼容性。为什么给出这个警告,它是针对什么类型给出的?

esyap4oy

esyap4oy1#

CS3016.
如果你有一个属性,它接受一个数组作为参数,并且项目被标记为CLSCompliant,你会得到这个警告。

nfs0ujit

nfs0ujit2#

我今天遇到了这个问题。我有4个警告示例出现。然后我发现我用属性装饰了那个程序集中的4个公共方法。当我一个接一个地删除它们时,错误一个接一个地消失了。
另外,如果你不介意不符合CLS,你可以把[CLSCompliant(false)]放在用属性修饰的方法上(或者放在定义方法的类上)。把它放在有问题的属性构造函数/类上并没有什么效果。我想这是有意义的,因为最终属性可能作为公共方法的元数据的一部分暴露在程序集之外。

qxgroojn

qxgroojn3#

我遇到了同样的问题,我必须做的是使用VS2010中的“在文件中查找”对话框选择用途:通配符和"查找内容:文本框中,输入

\[*\(*\)\]

这将生成所有属性示例的列表。一个接一个地进行,我能够识别并纠正警告。

相关问题