using System;
using System.Collections;
using System.Collections.Specialized;
public class MyCollection : NameObjectCollectionBase
{
public MyCollection() {
}
public MyCollection( IDictionary d, Boolean bReadOnly ) {
foreach ( DictionaryEntry de in d ) {
this.BaseAdd( (String) de.Key, de.Value );
}
this.IsReadOnly = bReadOnly;
}
public DictionaryEntry this[ int index ] {
get {
return ( new DictionaryEntry(
this.BaseGetKey(index), this.BaseGet(index) ) );
}
}
public Object this[ String key ] {
get {
return( this.BaseGet( key ) );
}
set {
this.BaseSet( key, value );
}
}
public String[] AllKeys {
get {
return( this.BaseGetAllKeys() );
}
}
public Array AllValues {
get {
return( this.BaseGetAllValues() );
}
}
public String[] AllStringValues {
get {
return( (String[]) this.BaseGetAllValues( typeof( string ) ));
}
}
public Boolean HasKeys {
get {
return( this.BaseHasKeys() );
}
}
public void Add( String key, Object value ) {
this.BaseAdd( key, value );
}
public void Remove( String key ) {
this.BaseRemove( key );
}
public void Remove( int index ) {
this.BaseRemoveAt( index );
}
public void Clear() {
this.BaseClear();
}
}
public class SamplesNameObjectCollectionBase {
public static void Main() {
IDictionary d = new ListDictionary();
d.Add( "red", "apple" );
MyCollection myROCol = new MyCollection( d, true );
myROCol.Add( "blue", "sky" );
PrintKeysAndValues( myROCol );
MyCollection myRWCol = new MyCollection();
}
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 );
}
}
}