using System;
using System.Collections;
using System.Collections.Specialized;
public class MyCollection : NameObjectCollectionBase {
private DictionaryEntry _de = new DictionaryEntry();
public DictionaryEntry this[ int index ] {
get {
_de.Key = this.BaseGetKey( index );
_de.Value = this.BaseGet( index );
return( _de );
}
}
public MyCollection( IDictionary d ) {
foreach ( DictionaryEntry de in d ) {
this.BaseAdd( (String) de.Key, de.Value );
}
}
public String[] AllKeys {
get {
return( this.BaseGetAllKeys() );
}
}
public Array AllValues {
get {
return( this.BaseGetAllValues() );
}
}
public String[] AllStringValues {
get {
return( (String[]) this.BaseGetAllValues( typeof(System.String) ) );
}
}
}
public class SamplesNameObjectCollectionBase {
public static void Main() {
IDictionary d = new ListDictionary();
d.Add( "A", "a" );
d.Add( "B", "b" );
d.Add( "C", "c" );
MyCollection myCol = new MyCollection( d );
Console.WriteLine( "Initial state of the collection (Count = {0}):", myCol.Count );
PrintKeysAndValues( myCol );
foreach ( String s in myCol.AllKeys ) {
Console.WriteLine( " {0}", s );
}
foreach ( Object o in myCol.AllValues ) {
Console.WriteLine( " {0}", o.ToString() );
}
foreach ( String s in myCol.AllValues ) {
Console.WriteLine( " {0}", s );
}
}
public static void PrintKeysAndValues( MyCollection myCol ) {
for ( int i = 0; i < myCol.Count; i++ ) {
Console.WriteLine( "[{0}] : {1}, {2}", i, myCol[i].Key, myCol[i].Value );
}
}
}