6

DynamicMethodコールドスタートアップのパフォーマンスを向上させるために、事前コンパイルを可能にするためにsを広範囲に使用するコードを移植しています。sをJITして、可視性チェックをスキップして実行できることに気付きましたDynamicMethod。これにより、ネストされたプライベートタイプにアクセスできますが、通常のアセンブリではアクセスできません(またはアクセスできませんか?明らかなローダーオプションが表示されません)。この設計決定の背後にある理論的根拠は何ですか?

4

1 に答える 1

2

この質問に答えるには少し手を振る必要があります。CASは永遠に複雑です。skipVisibility引数は、サンドボックスで実行されるコードを生成する信頼できるホストアプリケーションに関連しています。このような場合、実行環境が悪いため、メソッド生成時にチェックを行うことは適切ではありません。これは、メソッドがサンドボックス内で実行されるときに発生する必要があります。サンドボックスによって実行される通常のCASチェックの対象となる場合。

実際、引数をtrueに設定すると、ReflectionPermissionFlag.MemberAccessのアクセス許可要求が追加されます。これは、メソッドを生成するためのショットを取得するために必要です。

カオス。このMSDNの記事「サンドボックス化されたドメインへのRestrictedMemberAccessの追加」セクションにいくつかの背景情報があります。

于 2013-06-10T19:57:48.703 に答える