2013-04-13 4 views
3

원래 J #에서 온 DLL을 디 컴파일했습니다. 나는 그 JavaFlags은 다음과 J 번호 네임 스페이스에 정의되어 있음을 볼 수[JavaFlags] 속성의 의미는 무엇입니까?

[JavaFlags(0)] 
public ToolBarButton toolBarButtonProg; 

[JavaFlags(8)] 
public static int lastClass; 

: 나는 원래 코드에서 결석 한 다음 속성을 참조하십시오.

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

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

하지만 이러한 속성의 목적은 무엇입니까?

+0

이것은 내가 아는 한 내장되어 있지 않습니다. 디 컴파일을 시도하고'JavaFlagsAttribute'가 정의 된 곳을 보았습니까? – Oded

+0

@Oood pleace 내 편집을 참조하십시오. –

+0

_where_에 반영되어 있으면 (이 속성에 대해 어떤 반사 코드가 표시되는지) 그 의미를 알 수 있습니다. 코드에서 알 수있는 방법은 없습니다. – Oded

답변

3

이 속성은 CLR에 직접 표시되지 않는 Java 구조를 나타 내기 위해 J # 컴파일러에서 추가 된 것 같습니다. 예를 들어 CLR에는 정확히 protected 수정자를 미러링하는 가시성 수정자가 없으므로 컴파일러에서 특성과 함께 CLR에 public이라는 메서드를 생성하므로 J # 컴파일러는 컴파일 할 때 메서드를 protected으로 처리한다는 것을 알고 있습니다. 다른 Java 코드.