安全でないメソッドがいくつかある小さな C# クラスがあります。クラスのソース ファイルのコンテキストに対してのみ、C# ソース コードで "/unsafe" オプションを宣言的に指定する方法はあり#pragma
ますか? このような小さなクラス用に別のアセンブリを作成するのは嫌ですが、アセンブリの残りの部分 (クラスは現在その一部です) を安全でないコードに対して有効にしたくありません。
2988 次
2 に答える
7
いいえ、安全でないコードが含まれているとアセンブリ全体が影響を受けるため、これは (現在) 不可能です。
アセンブリにアンセーフ コードを含めることで、CLR に対して、アセンブリが安全ではない何かを行う可能性があることを伝えます。これにより、ランタイムがアセンブリを読み込むときの動作が変更されます。ここでの最大の変更点は、CLR が安全でないコードを検証しようとしないだけでなく、アセンブリが完全に信頼されていない限り、アセンブリの読み込みを拒否することです (たとえば、通常のユーザーがクリックして安全でないアセンブリを読み込むことはできませんでした)。一度。)
技術的な観点からは、この/unsafe
オプションを使用すると、コンパイラは次のモジュール レベルの属性に相当する IL をアセンブリに出力します。
[assembly:SecurityPermission(SkipVerification = true)]
[assembly:UnverifiableCode]
あなたの最善の選択肢は、あなたが言ったように、安全でないコードを独自の別のアセンブリにできるだけ分離することです。アセンブリに含まれるクラスが 1 つだけであるという事実は、1 つの安全でないクラスが原因で安全なコードでいっぱいのアセンブリ全体を汚染するよりも、コードの臭いがはるかに少なくなります。
于 2013-09-24T15:53:59.687 に答える