私はVBで作業している次のコードを持っています:
Public Shared Function LoadFromSession(Of T)(sessionKey As String) As T
Try
' Note: SBSSession is simply a reference to HttpContext.Current.Session
Dim returnValue As T = DirectCast(SBSSession(sessionKey), T)
Return returnValue
Catch ex As NullReferenceException
' If this gets thrown, then the object was not found in session. Return default value ("Nothing") instead.
Dim returnValue As T = Nothing
Return returnValue
Catch ex As InvalidCastException
' Instead of throwing this exception, I would like to filter it and only
' throw it if it is a type-narrowing cast
Throw
End Try
End Function
私がやりたいことは、縮小変換に対して例外をスローすることです。たとえば、5.5 のような 10 進数をセッションに保存した場合、それを整数として取得しようとすると、InvalidCastException をスローしたいと思います。 DirectCast
これはうまくいきます。
ただし、拡大変換を許可したいと思います (たとえば、5 のような整数をセッションに保存し、それを 10 進数として取得します)。 DirectCast
これは許可されませんが、許可さCType
れます。残念ながら、CType
縮小変換も可能です。つまり、最初の例では、値 6 が返されます。
目的の動作を実現する方法はありますか? おそらく、VB を使用して例外をフィルタリングすることによってCatch...When
ですか?