Plik "baza zmiennych"

0

Witam,
Robie mały projekcik w C# i chciałbym zrobić 1 plik który zawierałby wszystkie możliwe zmienne/stałe niezbędne do działania programu i żeby były one dostępne w każdym miejscu w programie... W VB.NET dodawało się moduł - a tutaj??

dzięki za pomoc :)
pozdrawiam North :)

0

System.Configuration.ConfigurationManager.AppSettings?

Tylko musisz dodac referencje do System.Configuration

0

hmmm nie o to mi chodziło ;)

Załóżmy że mam program:
namespace WindowsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

    private void Form1_Load(object sender, EventArgs e)
    {
        MessageBox.Show(a);
        MessageBox.Show(b);
    }
}

}

i teraz te zmienne a i b miałyby być w innym pliku (takiej "bazie" zmiennych) - jak coś takiego zrobić??

0

No to zrob sobie klase z tymi wszystkimi polami i albo daj je statyczne albo utworz jeden obiekt (jako singleton) i przekazuj do wszystkich metod, ktore beda go potrzebowac.

0

Oki, dodałem sobie plik Class do projektu:
using System;
using System.Collections.Generic;
using System.Text;

namespace WindowsApplication1
{
class Class1
{
public string p = "1";
}
}

i teraz w swoim projekcie głównym daje buttona i w nim:
private void button4_Click(object sender, EventArgs e)
{
MessageBox.Show(p);
}

i nie działa....:/

Coś jeszcze trzeba dodać??

0

Ekhem... Ani nie stworzyles obiektu klasy Class1, ani go nie przekazales do klikniecia. Jak chcesz miec latwo i przyjemnie, ale niekoniecznie elegancko to zrob tak:

class Class1 { public static string p = "1"; }

//pozniej
MessageBox.Show(Class1.p);


Ale nie jest to najbardziej eleganckie rozwiazanie. Lepiej byloby miec cos w tym stylu:

<code class="c#">
class CommonSettings
{

  protected static CommonSettings singleton;
  protected CommonSettings(){}
  public static CommonSettings GetSettings()
  {
    if(singleton ==null)
      singleton = new CommonSettings();
    return singleton;
  }

  public string p="costam";

}

//pozniej
MessageBox.Show(CommonSettings.GetSettings().p);

To drugie jest lepsze, bo wszystkie ustawienia reprezentowane sa przez konkretny obiekt (enkapsulacja) i zabezpieczone jako singleton (istnieje tylko jeden obiekt).

0

oki,działa - dzięki WIELKIE :)

0

W c# to raczej singletony sa nieeleganckie, lepiej zrobic to tak jak inne klasy NETowe (o powiedzmy Console)

static class foo
{
static int foo;
}

0

Mozna i tak, osobiscie uwazam singleton za lepsze rozwiazanie, nie lubie uzywac statycznosci tylko dlatego, ze tak jest wygodnie. Dzieki singletonowi jeden obiekt reprezentuje jeden zestaw ustawien, w razie potrzeby mozna szybko zmienic na wiele zestawow. W przypadku statycznosci potrzebna jest spora zmiana kodu. Console to troche inny przypadek, bo konsola bedzie ZAWSZE jedna. W przypadku ustawien nie jest to takie oczywiste (a takie rzeczy lubia sie zmieniac jak na zlosc ;))

1 użytkowników online, w tym zalogowanych: 0, gości: 1