CLSCompliant
属性は何ですか?
5 に答える
CLSCompliant
他の.NET言語で使用できることを確認する場合は、クラスに属性を付けます。
基本的なルールは次のとおりです。
符号なし型は、クラスのパブリックインターフェイスの一部であってはなりません。これが意味するのは、パブリックフィールドに
uint
またはのような符号なしの型を持たせてはならずulong
、パブリックメソッドが符号なしの型を返さないようにし、パブリック関数に渡されるパラメータに符号なしの型を持たせてはならないということです。ただし、符号なしタイプはプライベートメンバーの一部にすることができます。ポインタのような安全でないタイプは、
public
メンバーと一緒に使用しないでください。private
ただし、メンバーと一緒に使用できます。クラス名とメンバー名は、大文字と小文字だけで異なるものであってはなりません。たとえば、
MyMethod
とという名前の2つのメソッドを持つことはできませんMYMETHOD
。プロパティとメソッドのみをオーバーロードできます。演算子はオーバーロードしないでください。
コードの他のコンシューマにCLS 準拠であることを伝え、C# コンパイラに CLS 準拠であることを確認させます。
参照されている記事には、CLS コンプライアンスに伴う内容について、より多くの詳細が含まれています。
他の答えは正しいです。CLS は Common Language Specification の略です。これは、.NET 言語が実装して理解する必要がある、最小限の規則と必要な言語機能のセットです。このセットは、 .NET での型の定義方法を定義する共通型システムのサブセットです。
CLS に準拠しているということは、CLR でコンパイルおよび実行できる任意の言語で使用できるコードを記述できることを意味します。ただし、CLS への準拠は必須ではないため、CLS への準拠が困難または不可能な場合に柔軟に対応できます。
コードを他の開発者が使用することを意図している場合、API (パブリック クラスとメソッド) は CLS に準拠している必要があります。CLSCompliantAttribute をアセンブリに追加して、これを宣言する必要があります。FxCop ( Framework Cop) は私に同意しませんが、他の人のために書いていないのであれば、CLS 準拠は必要ありません。
アセンブリが CLSCompliantAttribute でマークされている場合、コンパイラはコードをチェックして、コンパイル時にコードが CLS 規則 (一部はocdecioで言及されています) に違反しているかどうかを確認し、修正のために違反を報告します。
CLS準拠は、CLRで許可されている完全な言語スペクトルのサブセットです。これは、CLRを対象とする大多数の言語で利用できる可能性が高いサブセットに制限されます。これは増加しますが、CLRを対象とするすべての言語でライブラリを使用できることを保証するものではありません。
ここに収まるように: プロジェクト全体を CLS 準拠としてマークするには、この行を追加AssemblyInfo.cs
します (ソリューション エクスプローラーの [プロパティ] の下にあります)。
[assembly:CLSCompliant(true)]
または同等に VB.NET で ( AssemblyInfo.vb
My Project の下に隠されています)
<Assembly: CLSCompliant(True)>