CLSCompliant
属性は何ですか?
CLSCompliant
属性は何ですか?
回答:
CLSCompliant
他の.NET言語で使用できることを確認したい場合は、属性にクラスをマークします。
これらは基本的なルールです:
符号なしの型は、クラスのパブリックインターフェイスの一部であってはなりません。これが意味することは、公共のフィールドは、符号なしのようなタイプの持つべきではないですuint
か、ulong
パブリックメソッドは、符号なしの型を返すべきではありませんが、パブリック関数に渡されたパラメータが符号なしの型を持つべきではありません。ただし、符号なし型はプライベートメンバーの一部になることができます。
ポインターのような安全でない型は、public
メンバーでは使用しないでください。ただし、private
メンバーと一緒に使用できます。
クラス名とメンバー名は、それらの大文字小文字のみに基づいて異なるべきではありません。たとえばMyMethod
、およびという名前の2つのメソッドを持つことはできませんMYMETHOD
。
オーバーロードできるのはプロパティとメソッドのみで、演算子はオーバーロードしないでください。
他の答えは正しいです。いくつかはっきりさせておきましょう。CLSはCommon Language Specificationの略です。これは、.NET言語が実装して理解する必要のある最小限のルールセットと必要な言語機能です。このセットは、.NETでの型の定義方法を定義する一般的な型システムのサブセットです。
CLSに準拠しているということは、CLRでコンパイルおよび実行できる任意の言語で使用できるコードを記述できることを意味します。ただし、CLSへの準拠は必須ではないため、CLSへの準拠が困難または不可能な場合に柔軟に対応できます。
コードを他の開発者が使用する場合は、API(パブリッククラスとメソッド)がCLSに準拠している必要があります。CLSCompliantAttributeをアセンブリに追加して、これを宣言する必要があります。FxCop(Framework Cop)は私に同意しませんが、他の人のために書いていない場合、CLSに準拠する必要はありません。
アセンブリがCLSCompliantAttributeでマークされている場合、コンパイラはコードをチェックして(コンパイルする必要があります)、コンパイル時にCLSルール(ocdecioの一部が言及されている)に違反していないかどうかを確認し、違反を修正するように報告します。
out
パラメーターなどのCLSCompliant以外の機能を問題なくサポートしているので、CLSComplianceを完了することの利点-したがって、マイクロソフトはCLSの要件を再検討し、おそらくそれらを緩める必要があると思います。
ここに収まるように:プロジェクト全体をCLS準拠としてマークするには、次の行を追加AssemblyInfo.cs
します(ソリューションエクスプローラーの[プロパティ]にあります)
[assembly:CLSCompliant(true)]
または同等のVB.NET(AssemblyInfo.vb
My Projectの下に非表示)
<Assembly: CLSCompliant(True)>
コードをCLSに準拠させていただきありがとうございます。