3

J# に由来する DLL を逆コンパイルしました。元のコードには存在しない次の属性が表示されます。

[JavaFlags(0)]
public ToolBarButton toolBarButtonProg;

[JavaFlags(8)]
public static int lastClass;

これらの JavaFlags は、次の J# 名前空間で定義されていることがわかります。

namespace com.ms.vjsharp.cor
{
  [AttributeUsage(AttributeTargets.All, AllowMultiple = false)]
  public class JavaFlags : Attribute
  {
    public int attr;

    public JavaFlags(int attr)
    {
      this.attr = attr;
    }
  }
}

しかし、これらの属性の目的は何ですか?

4

1 に答える 1

3

この属性は、CLR で直接表現されない Java 構造を表すために、J# コンパイラによって追加される可能性があります。たとえば、CLR にprotectedは Java の修飾子を正確に反映する可視性修飾子がないため、コンパイラはpublicCLR に属性とともにメソッドを生成するため、J# コンパイラは、他の Java コードをコンパイルするとき[JavaFlags(4)]と同じようにメソッドを処理することを認識します。protected

于 2013-04-13T23:55:36.260 に答える