2017-11-15 9 views
2

"withブロック"で作成された名前のないオブジェクトがあります。"ブロック付き"で作成されたオブジェクトを見るにはどうすればよいですか?

With Factory.CreateSomeObject() 
    .SomeProp = someValue 
    ... 
End With 

私の質問は、デバッガがブレークモードになっているときにオブジェクトを検査するにはどうすればいいですか?

+2

興味深い質問と1私はこれまで考えなかった。それは可能ではないかもしれないと思われます。その場合、回避策は式の結果をローカル変数に代入し、その変数をWith文で使用することです。 – jmcilhinney

+2

何かを見たい場合は、匿名で作成しないでください。とにかく私は「With」のステートメントが気に入らない。私はそれが利益であるとは決して理解していません。欠点は明らかに利点を上回っています(もしあれば)。 –

+0

これはコードの問題ではなくデバッガの問題だと思う:) – Georg

答えて

2

IはWithブロック内の行にブレークポイントを設定すると、関数から返されたオブジェクトは、ローカルウィンドウに表示されます。これはVS2015を使用しています。さらに、With行の関数名を右クリックし、[Add Watch]を選択すると、オブジェクトがウォッチウィンドウに表示されます。

マイコード:

Module Module1 
    Sub Main() 

     With FunctionThatCreatesAnA() 
      Console.WriteLine("{0}, {1}", .SomeString, .SomeInteger) 
     End With 

     Console.ReadLine() 
    End Sub 

    Function FunctionThatCreatesAnA() As ClassA 
     Return New ClassA With {.SomeString = "Blah Blah", .SomeInteger = 42} 
    End Function 
End Module 

Public Class ClassA 
    Public Property SomeString() As String 
    Public Property SomeInteger() As Integer 
End Class 

ローカルウィンドウ:

enter image description here

ウォッチウィンドウ:

enter image description here

おそらくとして私のために来たことはない
+0

@Chrisに感謝します.Localalsウィンドウでうまくいきます。ただし、2番目の方法では注意してください:関数名を右クリックすると、 "withブロック"で作成されたオブジェクトが表示されます。 – Georg

2

私はこれができないと思いますが、あなたは追加の行を使用することができます:あなたが最初の行に調べることができます。このソリューションにより

Dim someObj As Object = Factory.CreateSomeObject() 

With someObj 
    .SomeProp = someValue 
End With 

を。

Some additional information on StackOverflow (similar question).

関連する問題