using System;
//告诉编译器检查CLS相容的特性
[assembly: CLSCompliant(true)]
namespace SomeLibrary
{
//开始出现警告,因为类是公有的
public sealed class SomeLibraryType
{
//警告,返回值不符合CLS
public UInt32 Abc()
{
return 0;
}
//警告,仅大小写不同不符合CLS
public void abc()
{
}
//没有错误,该方法是私有的
private UInt32 ABC()
{
return 0;
}
}
}
这样写就会出现警告,因为它的公共的和受保护的成员不符合CLS特性,要想获得CLS规则的一个完整列表,请参见.NET Framework SDK文档的“跨语言互操作性(Cross-Language Interoperability)”一节。
如上代码要把类SomeLibraryType的修饰符public去掉的话一切警告也就消失,因为这样该类将使用默认修饰符internal,所以在程序集的外部不可见。顺便提一下不能改成private或protected和protected internal,因为命名空间中定义的元素无法显式声明为 private、protected 或 protected internal。