プロパティ自動実装
public bool CanNull { get; private set; }
C#では、自動実装するプロパティを読み取り専用にするために、setをプライベートにすることができます。
VB.NETではできません。
リスト6-89
Imports System
Imports System.Web.Mvc
Public Class ReferrerAttribute
Inherits ActionMethodSelectorAttribute
Public Property CanNull As Boolean
Public Sub New(ByVal _canNull As Boolean) 'コンストラクター
Me.CanNull = _canNull
End Sub
Public Overrides Function IsValidForRequest(controllerContext As ControllerContext, methodInfo As Reflection.MethodInfo) As Boolean
Dim req = controllerContext.HttpContext.Request
Dim referrer = req.UrlReferrer
If IsNothing(referrer) Then Return CanNull
Dim refHost = referrer.Host
Dim currentHost = req.Url.Host
Return refHost.Equals(currentHost, StringComparison.InvariantCultureIgnoreCase)
End Function
End Class
*67
・・・認証フィルターでも・・・
Imports System
Imports System.Web.Mvc
Public Class ReferrerExAttribute
Inherits FilterAttribute
Implements IAuthorizationFilter
Public Property CanNull As Boolean
Public Sub New(ByVal _canNull As Boolean)
Me.CanNull = _canNull
End Sub
Public Sub OnAuthorization(filterContext As AuthorizationContext) Implements IAuthorizationFilter.OnAuthorization
Dim req = filterContext.HttpContext.Request
Dim referrer = req.UrlReferrer
Dim msg = "アクセスに失敗しました。"
If IsNothing(referrer) Then
If Not CanNull Then
Throw New ReferrerExException(msg)
End If
Else
Dim refHost = referrer.Host
Dim currentHost = req.Url.Host
If Not refHost.Equals(currentHost, StringComparison.CurrentCultureIgnoreCase) Then
Throw New ReferrerExException(msg)
End If
End If
End Sub
Public Class ReferrerExException
Inherits Exception
Public Sub New(ByVal message As String)
MyBase.New(message)
End Sub
End Class
End Class
参考
//自動実装するプロパティ
http://dobon.net/vb/dotnet/vb6/property.html