Here is something much closer to what I was trying to do.
Thanks to Arne, and Peter and all who helped.
Sorry I didn't explain my question better.
Russell Mangel
Las Vegas, NV
// Begin Code
using System;
public class Client
{
public void Test( )
{
using ( IMsgFile m = new MsgFile( "file" ) )
{
// IMsgFile has GetAttachments( ) and GetRecipients()
Console.WriteLi ne( m.MessageClass );
INoteItem n = m as INoteItem;
if ( n == null )
{
Console.WriteLi ne( "Error casting to INoteItem." );
}
else
{
// NoteItem does not have GetAttachments( ) or GetRecipients()
Console.WriteLi ne( n.Color );
}
IPostItem p = m as IPostItem;
if ( p == null )
{
Console.WriteLi ne( "Error casting to IPostItem." );
}
else
{
// PostItem has only GetAttachments( );
Console.WriteLi ne( p.PostItemSize );
}
// Cast back to IMsgFile
IMsgFile m2 = n as IMsgFile;
if ( m2 == null )
{
Console.WriteLi ne( "Error casting to back IMsgFile." );
}
else
{
Console.WriteLi ne( m2.MessageClass );
}
}
}
}
public interface IMsgFile : IDisposable
{
String MessageClass
{
get;
}
IAttachment[] GetAttachments( );
IRecipient[] GetRecipients( );
}
public class MsgFile : IMsgFile, INoteItem, IPostItem
{
public MsgFile( String file )
{
}
#region IMsgFile Members
string IMsgFile.Messag eClass
{
get
{
return "IPM.Note";
}
}
IAttachment[] IMsgFile.GetAtt achments( )
{
throw new NotImplementedE xception( );
}
IRecipient[] IMsgFile.GetRec ipients( )
{
throw new NotImplementedE xception( );
}
#endregion
#region IDisposable Members
void IDisposable.Dis pose( )
{
Console.WriteLi ne( "Dispose Called." );
}
#endregion
#region INoteItem Members
int INoteItem.Color
{
get
{
return 6;
}
}
#endregion
#region IPostItem Members
int IPostItem.PostI temSize
{
get
{
return 10998;
}
}
IAttachment[] IPostItem.GetAt tachments( )
{
throw new NotImplementedE xception( );
}
#endregion
}
public interface INoteItem
{
Int32 Color
{
get;
}
}
public interface IPostItem
{
Int32 PostItemSize
{
get;
}
IAttachment[] GetAttachments( );
}
public interface IAttachment
{
String AttachmentName
{
get;
}
}
public interface IRecipient
{
String RecipientName
{
get;
}
}
// End Code
Thanks to Arne, and Peter and all who helped.
Sorry I didn't explain my question better.
Russell Mangel
Las Vegas, NV
// Begin Code
using System;
public class Client
{
public void Test( )
{
using ( IMsgFile m = new MsgFile( "file" ) )
{
// IMsgFile has GetAttachments( ) and GetRecipients()
Console.WriteLi ne( m.MessageClass );
INoteItem n = m as INoteItem;
if ( n == null )
{
Console.WriteLi ne( "Error casting to INoteItem." );
}
else
{
// NoteItem does not have GetAttachments( ) or GetRecipients()
Console.WriteLi ne( n.Color );
}
IPostItem p = m as IPostItem;
if ( p == null )
{
Console.WriteLi ne( "Error casting to IPostItem." );
}
else
{
// PostItem has only GetAttachments( );
Console.WriteLi ne( p.PostItemSize );
}
// Cast back to IMsgFile
IMsgFile m2 = n as IMsgFile;
if ( m2 == null )
{
Console.WriteLi ne( "Error casting to back IMsgFile." );
}
else
{
Console.WriteLi ne( m2.MessageClass );
}
}
}
}
public interface IMsgFile : IDisposable
{
String MessageClass
{
get;
}
IAttachment[] GetAttachments( );
IRecipient[] GetRecipients( );
}
public class MsgFile : IMsgFile, INoteItem, IPostItem
{
public MsgFile( String file )
{
}
#region IMsgFile Members
string IMsgFile.Messag eClass
{
get
{
return "IPM.Note";
}
}
IAttachment[] IMsgFile.GetAtt achments( )
{
throw new NotImplementedE xception( );
}
IRecipient[] IMsgFile.GetRec ipients( )
{
throw new NotImplementedE xception( );
}
#endregion
#region IDisposable Members
void IDisposable.Dis pose( )
{
Console.WriteLi ne( "Dispose Called." );
}
#endregion
#region INoteItem Members
int INoteItem.Color
{
get
{
return 6;
}
}
#endregion
#region IPostItem Members
int IPostItem.PostI temSize
{
get
{
return 10998;
}
}
IAttachment[] IPostItem.GetAt tachments( )
{
throw new NotImplementedE xception( );
}
#endregion
}
public interface INoteItem
{
Int32 Color
{
get;
}
}
public interface IPostItem
{
Int32 PostItemSize
{
get;
}
IAttachment[] GetAttachments( );
}
public interface IAttachment
{
String AttachmentName
{
get;
}
}
public interface IRecipient
{
String RecipientName
{
get;
}
}
// End Code
Comment