反思:走一堂课进行自动化测试

时间:2009-01-30 22:08:54

标签: .net unit-testing reflection

我有存储数据的类,以及获取个人贷款数据的方法。

我有代码可以处理属性并将数据拉回来,但根据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

我如何走这些方法呢?标记某些默认步行功能的最简单方法是什么,或默认不走?自定义属性?

此代码是否适用于传入的结构而不是类?

我希望将其编码为构建数据格式,以便在我走得更远的时候显示数据格式。

1 个答案:

答案 0 :(得分:1)

重新调整,可能是[DebuggerBrowsable(DebuggerBrowsableState.Never)]

但是,或许更好的方法是遵循指南,并使用填充它们的方法使属性具有幂等性?即在将对象传递给网格之前调用“填充”方法(告诉它你需要知道什么)。

对于结构......好吧,结构应该(除非非常具体的原因)总是不可变的。因此,懒惰加载结构几乎是矛盾的。你可能会冒失去这里发生的事情的风险......简短的版本:把它变成一个类(很可能是一个IDisposable,并且可能有一个终结器。)