>

사용하는 경우

sometype.GetProperties();

유형과 부모에서 모든 속성을 얻습니다. 그러나이 유형으로 명시 적으로 정의 된 속성 (부모가 아닌) 만 검색하려고합니다. 나는 그것이 BindingFlags.DeclaredOnly 라고 생각  옵션이었습니다.

그러나 이것을 시도 할 때 :

sometype.GetProperties(BindingFlags.DeclaredOnly);

0 개의 속성이 있습니다.

내가 뭘 잘못하고 있는지 아는 사람 있나요?


  • 답변 # 1

    BindingFlags 를 지정하면 그런 다음 가져올 속성을 명시 적으로 지정해야합니다. 예를 들면 다음과 같습니다.

    sometype.GetProperties (BindingFlags.DeclaredOnly | 
                            BindingFlags.Public | 
                            BindingFlags.Instance);
    
    

  • 답변 # 2

    요약 :

    <올> GetProperties() 를 사용하는 경우

     매개 변수없이 오버로드하면 모든공용 속성이 표시됩니다.

    반면에 GetProperties(BindingFlags) 를 사용하는 경우

     과부하 ( BindingFlags 를 허용하는 것)  매개 변수)를 입력 한 후 다음 플래그의 각 그룹에서 하나 이상의 비트 단위 OR을 지정해야합니다.

    BindingFlags.Instance  / BindingFlags.Static  (인스턴스 대 정적 속성),

    BindingFlags.Public  / BindingFlags.NonPublic  (공개 및 비공개 속성).

    예를 들어 공개 정적 속성을 얻으려면 GetProperties(BindingFlags.Public | BindingFlags.Static) 를 호출해야합니다.  결과를 얻기 위해. GetProperties(BindingFlags.Public) 만 호출  또는 GetProperties(BindingFlags.Static)  결과를 반환하지 않습니다.

    또한 BindingFlags.Default 지정  빈 배열을 반환합니다.

    GetProperties (BindingFlags)에 대한 MSDN 설명서에서 자세한 내용을 확인할 수 있습니다.

    와이즈 비즈 와이즈 비즈 또는

    The following BindingFlagsfilterflags can be used to define which nested types to include in the search:

      You must specify either 반품을 받으려면

        

      BindingFlags.Instance 지정 검색에 공개 속성을 포함 시키려면

        

      BindingFlags.Static 지정 : 비공개 메소드 (개인, 내부 및 보호 된 메소드)를 검색에 포함시킵니다. 기본 클래스의 보호 및 내부 메소드 만 리턴됩니다. 기본 클래스의 개인 메소드는 리턴되지 않습니다.

        

      BindingFlags.Public 지정 계층에 공개 및 보호 된 정적 멤버를 포함 시키십시오. 상속 된 클래스의 개인 정적 멤버는 포함되지 않습니다.

              

      다음 BindingFlagsmodifier플래그를 사용하여 검색 작동 방식을 변경할 수 있습니다.

              

      BindingFlags.NonPublic 단순히 상속 된 속성이 아니라 Type에 선언 된 속성 만 검색합니다.

        

  • 답변 # 3

    BindingsFlag를 약간 확장해야합니다. 의미있는 것을 되찾기 위해서는 최소한 접근성 수준과 인스턴스 대 정적을 포함해야합니다.

    실제로 찾고있는 것은 다음과 같습니다.

    BindingFlags.FlattenHierarchy
    
    

  • 답변 # 4

    MSDN 사이트에서.

    와이즈 비즈 따라서 바인딩 플래그를 지정하지 않으면 아무것도 얻지 못합니다.

  • 답변 # 5

    BindingFlags.DeclaredOnly 사용에 문제가있었습니다 , 결국 이것은 나를 위해 일했다 :

    var flags = BindingFlags.DeclaredOnly 
      | BindingFlags.Instance
      | BindingFlags.Public;
    someType.GetProperties(flags);
    
    

    Default (member) Specifies no binding flag.

    You must specify Instance or Static along with Public or NonPublic or no members will be returned.

  • 이전 graphviz - dot 트리에서 수평 노드 순서 적용
  • 다음 ruby on rails - SmarterCSV 및 Resque로 인해 정의되지 않은 분석법 닫기