Problema filosófico sobre elementos globales...

29/04/2006 - 13:06 por solved by design | Informe spam
Imaginemos un escenario en el que estemos construyendo una aplicación
grande pero descentralizada en el sentido de que está compuesta por varios
elementos que poco tienen que ver entre sí pero que es necesario que el
núcleo central los maneje de forma independiente.

Me surge una duda bastante gorda en cuanto a esto. En el mundo C++, cuando
un objeto necesitaba estar disponible a nivel de aplicación completa se
hacía global o local a un módulo con un método global que devolvía un
puntero (digamos referencia en el mundo .NET) a dicho objeto. Entonces
cada objeto local llamaba a ese método o referenciaba a esa variable
global.

En C# no están permitdas las variables ni los métodos globales...

La solución que se me ocurre es instanciar estas variables dentro de Main,
construir mi form global y pasarle a éste mediante métodos/constructor las
referencias a esos objetos "pseudo-globales". O lo mismo dentro de la
ficha principal respecto a todo lo demás.

Esta solución me parece un tanto "sucia" porque esos objetos son
independientes unos de otros, y no hay relación de "es uno" ni de
"contención", y si encima son muchos la cosa se "ensucia" más todavía:

o1;
o2;
o3;
...
oN;

Form f=new Form(o1,o2,...,oN);


Si implementamos el modelo MVC con un contenedor controlador, enmarronamos
algo más la cosa porque encima hay que pasar referencias hasta del color
del suelo, y en lugar de una serie de objetos independientes entre sí que
se pasan mensajes estamos construyendo una aplicación que sería una serie
de referencias que se pasan entre sí (al más puro estilo "un montón de
métodos que menean los datos entre sí" del paradigma tradicional).

Quizás esté confundio, pero me gustaría que me acararais un poco el tema.
¿Cuál es la forma de hacer del .NET? Etc, porque me parece que "esto no
está en los libros".


Los espejos se emplean para verse la cara; el arte para verse el alma.
 

Leer las respuestas

#1 Alberto Poblacion
29/04/2006 - 13:34 | Informe spam
"solved by design" wrote in message
news:
En C# no están permitdas las variables ni los métodos globales...



¿Y por qué no usas variables o métodos estáticos?

public class Globales
{
public static string Var1;
private static string var2;
public static string M1() { return var2; }
}

Desde cualquier punto de la aplicación puedes acceder a Globales.Var1, o
ejecutar Globales.M1().

Preguntas similares