テストの目的で、オブジェクトのすべてのプロパティとそれに対応する値を確認したいと思いHttpApplication
ます(HTTPModuleの一部の機能をテストしています)。私が最初に考えたのは、それをXMLにシリアル化してから、それを表示するか、ファイルに書き込むことでした。
問題は、HttpApplication
シリアル化可能なクラスではないため、シリアル化しようとすると例外がスローされることです。他のテクニックはありますか、またはシリアル化できないオブジェクトの文字列表現を取得することさえ可能ですか?Intellisenseで取得するのと同じプロパティとその値をすべて確認したいと思います。
リフレクションについて言及している記事をいくつか見ましたが、それが私のシナリオで機能することを示唆するものは何も見つかりませんでした。
アップデート:
いくつかの応答を受け取った後、Reflectionを使用する必要があるようです。これが私が使用しているコードです:
Dim sProps As New StringBuilder
For Each p As System.Reflection.PropertyInfo In oHttpApp.GetType().GetProperties()
If p.CanRead Then
sProps.AppendLine(p.Name & ": " & p.GetValue(oHttpApp, Nothing))
End If
Next
私のAppendLineステートメントでは、例外がすぐにスローされます。
System.InvalidCastException:文字列 "Context:"およびタイプ'HttpContext'に対して演算子'&'が定義されていません。Microsoft.VisualBasic.CompilerServices.Operators.InvokeUserDefinedOperator(UserDefinedOperator Op、Object [] Arguments)at Microsoft.VisualBasic.CompilerServices.Operators.InvokeUserDefinedOperator(UserDefinedOperator Op、Object [] Arguments)at Microsoft.VisualBasic.CompilerServices.Operators左、オブジェクト右)
@granadaCoder、あなたは私が行くのにどれだけ「深い」かを知る必要があると言いました、これが問題であるかどうか疑問に思います。上記のエラーでContext
は、複雑なオブジェクトなので、それにドリルダウンして個々のプロパティを取得する必要がありますか?私がそれをどのように行うことができるか知っていますか?それとも私のループ内でGetProperties
もう一度呼び出すのと同じくらい簡単ですか?p