Patron singleton

06/03/2009 - 21:29 por Edilberto Arteaga | Informe spam
Hola a todos,

en WindowsForm tengo una clase base (Form) de la que heredo todos mis
formularios para un proyecto, y quiero implementar el patron singleton pero
colocando el codigo en la clase base ya que actualmente lo estoy colocando
en cada formulario heredado y es tedioso estar colocando lineas repetitivas
en cada forma.
este es el codigo que coloco en cada formulario

static <<nobreclas>> instance = null;
static readonly object padlock = new object();
public static <<nobreclas>> Instance
{
get
{
lock (padlock)
{
if (instance == null)
{
instance = new <<nobreclas>>();
}
else
{
instance.BringToFront();
instance.WindowState = FormWindowState.Maximized;
}
return instance;
}
}
}

talves esto sea muy facil pero estoy confundido y no he podido implentarlo
en la clase base para que en las clases hijas sea heredado.

Saludos
 

Leer las respuestas

#1 Alberto Poblacion
06/03/2009 - 22:35 | Informe spam
"Edilberto Arteaga" wrote in message
news:
Mostrar la cita
Una forma de resolverlo consiste en usar Generics, suponiendo que estés
trabajando al menos con la versión 2.0 de C#. Cambia tu clase base para que
sea genérica de parámetro T, y mete dentro el mismo código que tienes, pero
poniendo T donde pones <<nobreclase>>:

public class MiClaseBase<T> : Form where T:Form,new()
{
static T instance = null;
static readonly object padlock = new object();
public static T Instance
{
get
{
lock (padlock)
{
if (instance == null)
{
instance = new T();
}
else
{
instance.BringToFront();
instance.WindowState = FormWindowState.Maximized;
}
return instance;
}
}
}
//Aquí el resto de lo que tengas en la clase base
}

Y luego haz que tus clases hijas hereden de MiClaseBase< <<nobreform>> > en
lugar de MiClaseBase.

public class MiClaseHija : MiClaseBase<MiClaseHija>
{
...
}

Preguntas similares