15

サードパーティ ライブラリをWindows ストア アプリ用の .NET に移植することを検討しています。ライブラリは、 ILGenerator.Emitメソッドのオーバーロードへの呼び出しを介してSystem.Reflection.Emit.OpCodesを過度に使用します。

.NET for Windows Store Apps API には、OpCode構造とOpCodesクラスが含まれていますが、クラスはありません。またILGenerator、私が見つけた限りでは、代替も見つかりませんでした。

私は明らかに何かが欠けていますが、ILGeneratorクラスがなければ、.NET for Windows Store apps API を含める目的System.Reflection.Emit.OpCodeですかOpCodes?

4

2 に答える 2

1

良い質問。確かなことは言えませんが、OpCode / Opcodes を使用する理由として考えられるのは 2 つだけです (それが他の目的で使用されているとは本当に想像できません)。

  1. ILGenerator を使用してコードを組み立てる
  2. f.ex を使用してコードを逆アセンブルします。MethodInfo.GetMethodBody を実行し、IL コードを含むバイトを解析する

前者ではないので、後者を使っているのでしょう。このアプリケーションは、静的コード分析です。私自身がそれを使用しています。いくつかのモッキング動作を実装し、それに渡されたラムダ式が何であるかを把握します (この場合、式は使用できませんでした)。このシナリオでより可能性が高いコード分析の別のアプリケーションは、許可されていない特定のクラス/メソッド/構造が使用されているかどうかを確認することです (特定の機能を使用してほしくないことが想像できます)。

于 2013-02-22T07:38:26.800 に答える