Salut, je suis en train d'explorer des façons de mettre en œuvre quelque chose Visitor Patterns sans toutes les méthodes de visite de décoration. Sofar J'ai découvert que je pourrais utiliser Option Strict Off dans VB.NET mais il a quelques effets secondaires. J'ai un ensemble de classes Shape qui héritent d'une forme de baseclass. Supposons que nous avons la classe suivante qui acceptent les formes pour:Limiter strict off VB.NET
Public Class ShapeAcceptor
Public Sub New()
MyBase.New
End Sub
Public Sub AcceptShape(s as Shape)
AcceptAny(s)
End sub
Private Sub AcceptAny(o as Object)
Accept(o)
End sub
Private Sub Accept(byval s as Shape)
Console.writeLine("Shape")
End Sub
Private Sub Accept(byval s as Square)
Console.WriteLine("Square")
End sub
Private Sub Accept(byval s as Circle)
Console.writeLine("Circle")
End Sub
Private Sub Accept(byval s as Triangle)
Console.writeLine("Triangle")
End Sub
End Class
Cela fonctionne lorsque l'option explicite est désactivée. Cependant, un programme appelant la méthode AcceptShape avec quelque chose d'autre compile mais donne une exception d'exécution. Comment pouvons-nous transformer cela en erreur compiletime?
Public Class Application
Public Shared Sub Main()
Dim acceptor as new ShapeAcceptor
Dim env as new Envelope
For Each s as Shape in env.Items
acceptor.AcceptShape(s)
Next
acceptor.AcceptShape(new NotAShape())
End Sub
End Class