2010-12-03 2 views
1

공개 API의 어셈블리에서 리플렉션을 사용하고 있습니다. System.CodeDOM과 함께 API를 통해 정보를 추출하는 코드를 생성하고 있습니다.get_PropertyName()/set_PropertyName() vs PropertyName?

내 자동 생성 코드의 일부로 API 어셈블리에서 여러 가지 유형의 속성 값을 참조하고 있습니다. 그러나, 나는 실제로 생성 된 코드에 존재하지 않는 속성에 대한 참조로 끝나고있다. 나는 Type.GetProperties()을 사용했는데, 이는 내가 알고있는 것으로부터 공공의 재산만을 반환해야한다는 것을 알고 있습니다.

나는 그것을 더 들여다 내가 누락 된 재산을했을 때 get_SamplePropertyset_SampleProperty하지만 실제 SampleProperty 속성을 호출 한 클래스 대신 두 가지 방법이 있었다, SampleProperty라는 말 것을 발견했다.

여기 무슨 일 이니? Intellisense는 이러한 방법을 별도의 방법으로 취급하는 이유는 무엇입니까?하지만 반사를 통해 반환 될 때 속성으로 표시됩니까?

+0

도움이 될 수 있도록 [SSCCE] (http://pscode.org/sscce.html)가 필요하다고 생각합니다. –

답변

5

저는 공용 속성 만 반환해야한다는 것을 알고있는 PropertyInfo.GetProperties()를 사용했습니다.

PropertyInfo 클래스에는 GetProperties 메서드가없는 첫 번째 전화 끊기 일 수 있습니다. Type 클래스는 않습니다. 귀하의 질문은 그렇지 않으면 실제로 Type.GetMethods()를 사용하고 있음을 나타냅니다. 예, 속성에 대한 get_Blah 및 set_Blah 속성 접근 자 메서드를 반환합니다. 후드에서 속성은 실제로 메서드로 구현됩니다.

Type.GetProperties()를 사용하여 속성을 반영하십시오.

+0

+1 대답이 올 때도 똑같은 글을 쓰고있었습니다. =) –

+0

죄송합니다. Type.GetProperties()를 사용하고있는 오타였습니다. –

관련 문제