사용하는 경우
sometype.GetProperties();
유형과 부모에서 모든 속성을 얻습니다. 그러나이 유형으로 명시 적으로 정의 된 속성 (부모가 아닌) 만 검색하려고합니다. 나는 그것이
BindingFlags.DeclaredOnly
라고 생각
옵션이었습니다.
그러나 이것을 시도 할 때 :
sometype.GetProperties(BindingFlags.DeclaredOnly);
0 개의 속성이 있습니다.
내가 뭘 잘못하고 있는지 아는 사람 있나요?
- 답변 # 1
- 답변 # 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.
BindingFlags
를 지정하면 그런 다음 가져올 속성을 명시 적으로 지정해야합니다. 예를 들면 다음과 같습니다.