問題タブ [cls-compliant]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - CLS互換パブリックプロパティ命名検証ルーチン
データ型(パブリックプロパティのみを持つ型)をオンザフライで定義できるシステム(reflection.emitを使用して覆い隠す)に取り組んでいます。新しい型もCLSに準拠する必要があります。これは、メンバー名を検証するバリデーターでしょうか。 CLSに準拠するために考慮する必要があります。入力した名前に問題がないかどうかを判断するために、関数が何を検証するかだけに関心があります。
何かのようなもの
c# - 非CLS準拠のコードを他の言語を使用するプロジェクトから隠す方法は?
この質問は、プロジェクトの要件や問題よりも好奇心からのものです。
1つの言語(C#など)で非CLS準拠のコードを使用していて、現在の言語でのみ(プロジェクト全体で、内部を作成することは選択できません)、そのように使用する必要があります。同時に、許可する必要があります。コンパイル時エラーを生成せずに競合する実装を呼び出すことができる他の言語(VBなど)。
例えば、
問題:クロスランゲージプロジェクトから「print」メソッドの1つを何らかの方法で非表示にすることで、ここでコンパイル時エラーを回避する必要があります(C#プロジェクトが目的の実装を呼び出せるようにします)。
ご関心をお寄せいただきありがとうございます。
.net - BCL は CLS とどのように関連していますか?
いくつかの .net 理論の質問: 実際に標準化されているライブラリはどれですか? 32 ビット整数やこのすべての低レベル情報などを指定する Common Type System があることは知っていますが、Common Language Specification と Base Class Libraries のステータス/関係について混乱しています。
システムには、System.Object、System.ValueType、System.Exception という基本的な型がいくつかあります。しかし、System.String や、.Length、.StartsWith、string.IsNullOrEmpty などのメソッド/プロパティについてはどうでしょうか?
これらは標準の一部ですか? ECMA-335 は、CLS 準拠の .net ランタイムを実装するのに十分ですか?
PS: 私は、人々が日常的に使用する多くの機能が標準に準拠していないことを知っていますが、Microsoft 独自の .net Framework 実装の一部です。これは、サポートされていないオペレーティング システムで既存のアプリを実行することに関するものではありません。そのためには Mono を検討します。これは実際には、.net のコアを構成するもの、.net 標準ライブラリとは何かについての理論的な問題です。
c# - C# 4.0 の新機能 - 「オプションのパラメーター」は CLS に準拠していますか?
この新機能は本当に便利です。
最近、「Microsoft All-In-One Code Framework」のドキュメントを読んだところ、「オプションのパラメーター」は CLS に準拠していないと書かれていました。
そこで、パブリック API で「オプションのパラメーター」を使用してテストし、FxCop を有効にしてからコンパイルしましたが、FxCop は何も文句を言いませんでした。その間、戻り値の型として uint を持つ API を追加すると、FxCop は警告を報告しました。
だから今、私は混乱しています.「オプションのパラメータ」はCLSに準拠していますか?
また、新しい言語機能が CLS に準拠しているかどうかを確認する最善の方法は何ですか?
c# - CLS 互換の代替プロパティの命名パターン
こんな物件あったら
代替案を書きたいのですが、メソッドの場合のようにオーバーロードを書くことはできません。でも名前はどうすればいいの?.NET ライブラリに一般的な方法はありますか?
c# - ulong プロパティの CLS 準拠の代替手段
バックグラウンド
私はマネージ x64 アセンブラ (ライブラリでもあります) を作成しているため、アドレスおよびオフセットとして使用する符号なし 64 ビット整数プロパティを定義する複数のクラスがあります。いくつかはファイル オフセットで、他は絶対アドレス (メイン メモリに相対的) で、その他は相対仮想アドレスです。
問題
ulong
上記のシナリオでは、プロパティにデータ型を使用していますが、これは正常に機能します。ただし、そのようなプロパティは CLS に準拠していません。それらを としてマークすることはでき[ClsCompliant(false)]
ますが、ライブラリのユーザーに CLS 準拠の代替手段を提供する必要があります。
オプションと質問
より大きなデータ型の代替プロパティを提供することを提案する人もいますが、 から0
までのすべての値を保持できるより大きな符号付き整数プリミティブがないため、これはオプションではありませんUInt64.MaxValue
。
ほとんどの使用シナリオでは、すべての可能な値が使用されるわけではないため、アセンブリ全体を非 CLS 準拠としてマークしたくありませんUInt64.MaxValue
。したがって、たとえば、正の値のみを受け入れるAddress
代替long
プロパティを提供できます。ただし、何らかの理由で を超える値が含まれているAddressAlternative
場合はどうなるでしょうか。いくつかの例外をスローする必要がありますか?Address
Int64.MaxValue
AddressAlternative
そして、にふさわしい名前は何でしょうAddressAlternative
?
を使用するたびに代替手段を提供するulong
と、多くの「二重」プロパティが発生します。これを行うより良い方法はありますか?ulong
プロパティのすべての使用法が同じセマンティクスを持つわけではないことに注意してくださいstruct
。
そして最後に、コンストラクターのパラメーターに同じ CLS 準拠の問題があります。long
では、そのようなパラメーターを受け入れる代替のオーバーロードを提供する必要がありますか?
ほとんどのシナリオで使用できる限り、CLS のみのコンテキストからライブラリを使用する場合、ライブラリの (一部の機能) の使用を制限してもかまいません。
c# - double.MaxValue が等しいかどうかを比較するのは良い考えですか?
float... または MinValue についても同じ質問をすることができます。
特別な価値として使おうと思っています。精度が原因でバグが発生することはありますか? これらの数値で算術演算を行うことは期待していません。設定するだけです。
明確化: これをセンチネル値に使用しています。
C# 仕様に記述されているものですか?
c# - WSDL から生成されたプロキシ クラスに CLS 準拠のエラーが発生する
.net 2003 を使用して WSDL ファイルからプロキシ クラスを生成しようとしました。コード"
何が原因でしょうか?
識別子 'FinancialTransactionCard.lifecycleStatus' が CLS に準拠していない場合のみ異なる
visual-studio - CA1014 VS2010のStyleCopでCLSCompliant(true)エラーメッセージで「some.dll」をマークします
StyleCopを実行すると、CLSCompliant(true)でdllをマークする必要があるというエラーメッセージが表示されます。
これは何ですか?CLSCompliant(true)でdllをマークするように設定するにはどうすればよいですか?
.net - CA1026 -- CLS 準拠の別の方法が提供されている場合、このメッセージを非表示にできますか?
CA1026によると: 既定のパラメーターを使用しないでください。既定のパラメーターを使用することは想定されていません。
MSDN は、メッセージを抑制しないように言っています。
このルールからの警告を抑制しないでください。
ただし、メソッドの CLSCompliant バリエーションを含めると、このメッセージを抑制できますか? または、同じメソッドの 2 つのバリエーションがあり、1 つはすべてデフォルトのパラメーターで、もう 1 つは空で、問題が発生しますか?
MSDN の提案を無視しても問題ないでしょうか? メソッド (コンストラクター) を明確にマークし、CLSCompliant(false)
デフォルト値を取らないメソッド (コンストラクター) を提供しています。
補足:これは次の理由で適切に行われているようです。
コンパイラは、マネージ コードにアクセスするときに、C++ のマネージ拡張の既定のパラメーターの値を無視します。
...だから、この方法でコンパイルすると問題が発生するのだろうか?