Shared Sub Main(ByVal args As String()) Dim doc As New Document("Test Document")
' only cast if it is safe If TypeOf doc Is IStorable Then Dim isDoc As IStorable = doc
isDoc.Read( )
Else
Console.WriteLine("Could not cast to IStorable") End If
' this test will fail If TypeOf doc Is ICompressible Then Dim icDoc As ICompressible = doc
icDoc.Compress( )
Else
Console.WriteLine("Could not cast to ICompressible") End If End Sub
End Class
Interface IStorable Sub Read( ) Sub Write(ByVal obj As Object)
Property Status( ) As Integer End Interface 'IStorable
' here's the new interface
Interface ICompressible Sub Compress( ) Sub Decompress( ) End Interface 'ICompressible
' Document implements both interfaces Public Class Document
Implements IStorable
' the document constructor Public Sub New(ByVal s As String)
Console.WriteLine("Creating document with: {0}", s) End Sub 'New
' implement IStorable Public Sub Read( ) Implements IStorable.Read
Console.WriteLine("Implementing the Read Method for IStorable") End Sub 'Read
Public Sub Write(ByVal o As Object) Implements IStorable.Write
Console.WriteLine( _
"Implementing the Write Method for IStorable") End Sub 'Write
Public Property Status( ) As Integer Implements IStorable.Status
Get
Return Status End Get
Set(ByVal Value As Integer)
Status = Value End Set End Property
' hold the data for IStorable's Status property Private myStatus As Integer = 0 End Class 'Document