读书人

CLSCompliantAttribute属性为什么不能

发布时间: 2011-12-21 23:56:01 作者: rapoo

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)]则有警告。

读书人网 >C#

热点推荐