2009-01-30 3 views
1

데이터를 저장하는 클래스와 개별 대출을위한 데이터를 가져 오는 메소드가 있습니다.리플렉션 : 자동 테스트를위한 클래스 걷기

속성을 처리하고 데이터를 다시 가져 오는 코드가 있지만 MSDN 코딩 지침에 따르면 속성은 데이터를 얻으려는 것이지 아무것도 수행하지 않습니다. 내 속성은 실제로 메인 프레임의 화면으로 이동하여 데이터를 스크랩합니다. 따라서 속성 위에 마우스를 올리거나 마우스를 디버거의 코드 위로 이동하면 가끔 메인 프레임의 어떤 화면이 바뀌는 지 알 수 있습니다. 따라서 내 반사 보행기를 변경하여 디버거를 당길 수도 있습니다. 함수 결과로 변환하고 버퍼링되지 않은 데이터를 함수로 변경합니다.

Public Function GetAllReadableProperties(ByVal obj As Object) As String 
     Dim result As New System.Text.StringBuilder(300) 

     For Each Item As System.Reflection.PropertyInfo In obj.GetType.GetProperties() 
      With Item 
       If .CanRead Then 
        result.Append(.Name + ":") 
        If .GetIndexParameters().Length = 0 Then 
         Dim value As Object = .GetValue(obj, Nothing) 
         If value Is Nothing Then 
          result.AppendLine("<Nothing>") 
         Else 
          result.AppendLine(value.ToString) 
         End If 
        Else 
         result.AppendLine("Indexed") 
        End If 
       End If 
      End With 
     Next 
     Return result.ToString 
    End Function 

나는 또한 어떻게 걸을까요? 기본 보행을 위해 특정 기능에 태그를 지정하는 가장 쉬운 방법은 무엇입니까? 맞춤 속성?

이 코드는 클래스 대신 전달 된 구조에서 전혀 작동합니까?

필자는 이것을 멀리 할 때 DataGridview 디스플레이 용 데이터 테이블을 작성하는 것을 코드화하고 싶습니다.

+0

내 동생이 여기에 링크되어 있지만, 나는 그걸 파헤쳐서 얼마나 잘 작동하는지 볼 기회가 없었습니다. http://social.msdn.microsoft.com/Forums/en-US/netfxbcl/thread/7135f0be-3127-41a2-b470-7402038ce5dd – Maslow

답변

1

다시 작성, 아마도 [DebuggerBrowsable(DebuggerBrowsableState.Never)]?

그러나 더 좋은 방법은 지침을 따르고 속성을 멱등수로 채우는 방법입니다. 즉 객체를 그리드로 전달하기 전에 "채우기"메소드를 호출해야합니다.

구조체의 경우 구조체는 (매우 구체적인 이유는 제외하고) 항상 변경 불가능해야합니다. 따라서 게으른 로딩 구조체는 꽤 모호성이다. 당신은 아마 여기에 무슨 일이 일어나고 있는지 추적을 잃을 위험이 있습니다 ... 짧은 버전 : 그것은 아마도 IDisposable이며, 아마도 최종자를 가진 클래스 일 것입니다.

+0

많은 경우 메인 프레임의 대출 상태가 변경 될 수 있으므로 데이터를 버퍼링하지 않고 멱등환이 아닙니다. 변경 사항이 적용되었는지 확인해야합니다. 특정 태그 기능을 수행하는 기능은 다른 프로젝트에도 적용됩니다. – Maslow

+0

구조체에 대해 물어 본 유일한 이유는 동료가 구조체를 클래스 대신 사용할 수 있기 때문입니다. – Maslow

+0

그러면 동료가 부적절하게 사용할 수 있습니다. –