Imports System
Public Class MainClass
Shared Sub Main(ByVal args As String())
Dim doc As New Document("Test Document")
If TypeOf doc Is IStorable Then
Dim isDoc As IStorable = doc
isDoc.Read( )
Else
Console.WriteLine("Could not cast to IStorable")
End If
If TypeOf doc Is ICompressible2 Then
Dim ilDoc As ICompressible2 = doc
Console.Write("Calling both ICompressible and ")
Console.WriteLine("ICompressible2 methods...")
ilDoc.Compress( )
ilDoc.LogSavedBytes( )
Else
Console.WriteLine("Could not cast to ICompressible2")
End If
If TypeOf doc Is ICompressible Then
Dim icDoc As ICompressible = doc '
Console.WriteLine( _
"Treating the object as Compressible... ")
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
Interface ICompressible
Sub Compress( )
Sub Decompress( )
End Interface 'ICompressible
Interface ICompressible2
Inherits ICompressible
Sub LogSavedBytes( )
End Interface 'ICompressible2
Public Class Document
Implements ICompressible2, IStorable
Public Sub New(s As String)
Console.WriteLine("Creating document with: {0}", s)
End Sub 'New
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 myStatus
End Get
Set(ByVal Value As Integer)
myStatus = Value
End Set
End Property
' implement ICompressible
Public Sub Compress( ) Implements ICompressible.Compress
Console.WriteLine("Implementing Compress")
End Sub 'Compress
Public Sub Decompress( ) Implements ICompressible.Decompress
Console.WriteLine("Implementing Decompress")
End Sub 'Decompress
' implement ICompressible2
Public Sub LogSavedBytes( ) Implements ICompressible2.LogSavedBytes
Console.WriteLine("Implementing LogSavedBytes")
End Sub 'LogSavedBytes
' hold the data for IStorable's Status property
Private myStatus As Integer = 0
End Class 'Document
|