terça-feira, novembro 03, 2009

Criar um indexer num objecto

Não conhecia esta técnica, mas em C# podemos simular que um objecto é uma colecção. O truque é simples o objecto tem uma colecção interna que a expõe indirectamente através de uma propriedade.

class Tester
{
 private Dictionary<string, int> dictionary = new Dictionary<string, int>();

 // Indexer
 public int this[string key]
 {
    get { return dictionary [key]; }
    set { dictionary [key] = value; }
 }
}
//[...]

static void Main(string[] args)
{
 Tester tester = new Tester();
 //[...]
 int data = tester["xpto"];
 //[...]
}

2 comentários:

  1. Olá,

    isto é um GoF Pattern só não me recordo do nome.

    Abraços
    Paulo Aboim Pinto
    Odivelas - Portugal

    ResponderEliminar
  2. Esta técnica é utilizada no padrão Builder, apesar de ela em si não ser o padrão.

    ResponderEliminar