嗨我正在探索如何实现一些访客模式,但没有所有的装饰访问方法。 Sofar我发现我可以在VB.NET中使用Option Strict Off,但它有一些副作用。我有一组Shape类继承自基类Shape。假设我们有以下类,接受的形状:严格限制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
这适用于选项显式关闭时。然而,调用AcceptShape方法和其他东西的程序会进行编译,但会产生运行时异常。我们怎样才能把它变成一个编译时错误?
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