[c#] 상속 된 클래스가 아닌 클래스의 리플렉션 속성을 가져옵니다.

class Parent {
   public string A { get; set; }
}

class Child : Parent {
   public string B { get; set; }
}

속성 A없이 속성 B 만 가져와야하지만

Child.GetProperties(System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.Instance)

두 속성 모두 반환 : /



답변

다음과 같이 플래그 에 BindingFlags.DeclaredOnly 를 추가해야합니다 .

typeof(Child).GetProperties(System.Reflection.BindingFlags.Public
    | System.Reflection.BindingFlags.Instance
    | System.Reflection.BindingFlags.DeclaredOnly)


답변

DeclaredOnly 바인딩 플래그를 사용해보십시오. 반환되는 속성을 관심있는 클래스에서 선언 된 속성으로 만 제한해야합니다. 다음은 코드 샘플입니다.

PropertyInfo[] properties = typeof(Child).GetProperties(System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.DeclaredOnly);


답변

더하다 BindingFlags.DeclaredOnly


답변

에서 Type.cs :이 경우 DeclaredOnlyLookup를 사용

  private const BindingFlags DefaultLookup = BindingFlags.Instance | BindingFlags.Static | BindingFlags.Public;
  internal const BindingFlags DeclaredOnlyLookup = BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.Static | BindingFlags.DeclaredOnly;


답변