CLSCompliantAttribute属性为何不能单独用于类
看下面这段代码
using System;
namespace ConsoleApplication1
{
/// <summary>
/// Class1 の概要の説明です。
/// </summary>
[CLSCompliant(true)]
class myClass
{
public uint abc()
{
uint a, b;
a = 0;
b = 2;
return a + b;
}
/// <summary>
/// アプリケーションのメイン エントリ ポイントです。
/// </summary>
[STAThread]
static void Main(string[] args)
{
Console.WriteLine( "OK ");
}
}
}
编译时出现下面的ERROR:
F:\study\VS_Pro_Book\C#\ConsoleApplication1\ConsoleApplication1\Class1.cs(7): アセンブリが準拠するとされていないため、 'ConsoleApplication1.myClass ' を CLS 準拠とすることはできません。
我有些不太明白:CLSCompliantAttribute属性的应用范围是所有的程序元素,为什么上面的写法会出错,请各位大虾指点一下。
------解决方案--------------------首先要有[assembly: System.CLSCompliant(true)],说明下程序集是CLS兼容还是CLS不兼容(不兼容使用false),然后你才可以定制在类中是否支持CLS兼容。
例如:
AssemblyInfo.cs 中有
[assembly: System.CLSCompliant(true)]
然后在类中
[CLSCompliant(false)]
public partial class frmMain : Form
{
public frmMain()
{
InitializeComponent();
}
public void frmMain_load(object sender, EventArgs e)
{
}
public void frmMain_Load(object sender, EventArgs e)
{
}
}
无警告。
如果去掉[CLSCompliant(false)]则有警告。