También tuve una duda similar, y la única manera de solucionarlo elegantemente, fue usando el patrón
Singleton y colocando una variable de acceso publico
o directamente generando el get().
class main
{
private static Main instance = null;
public string variable;
private Main() {
variable = "le agrego un valor";
}
public static Main GetInstance()
{
if (instance == null)
instance = new Main();
return instance;
}
}
Y en la clase donde quiero usar la variable sería algo así con uso publico:
class otraclase
{
private Main main;
private OtraClase() {
main= Main.GetInstance();
}
private metodo() {
MessageBox.Show("variable de Main:" + main.variable());
}
}