Avatar billede pfp Nybegynder
02. maj 2005 - 19:00 Der er 14 kommentarer og
1 løsning

Ultra-global variabel?

Hejsa,

Hvordan (kan man?) definerer jeg en variable der er "så global" at den er tilgængelig overalt i mit namespace?

Hvordan gør man f.eks. med en SqlConnection Conn, som man gerne vil gøre bruge af fra alle forms i ens applikation?

Man kunne vel overføre den i constructoren hver gang man instantiere en ny form, men syntes det er en smule omstændigt.

Der er sikkert en smart måde at gøre det hele på, jeg har bare ikke fundet den endnu :)

Inspiration og gode råd modtages med kyshånd :)

/pfp
Avatar billede arne_v Ekspert
02. maj 2005 - 19:01 #1
Du erklærer den bare public static så kan den bruges overalt.
Avatar billede arne_v Ekspert
02. maj 2005 - 19:02 #2
public class UltraGlobal
{
    public static SqlConnection Conn;
    ...
}

så kan den bruges som:

UltraGlobal.Conn
Avatar billede arne_v Ekspert
02. maj 2005 - 19:03 #3
men tror du ikke at du skulle overveje et andet design ...
Avatar billede pfp Nybegynder
02. maj 2005 - 19:44 #4
"men tror du ikke at du skulle overveje et andet design"

Gerne, men jeg kender ikke til andre metoder..hører som sagt gerne om alternative måder at løse den slags problemer på..
Avatar billede arne_v Ekspert
02. maj 2005 - 19:53 #5
[når du får nogle års erfaring med C# så vil du nok putte database
tilgangen ned i et lag som ligger langt fra dit GUI lag men det ignorerer
vi lige for nu]

Jeg ville nok lade hver form have sin egen connection eller overføre den i constructor.

Eller hvis det absolut skal laves som global så bruge en Singleton.
Avatar billede pfp Nybegynder
02. maj 2005 - 20:21 #6
Hehe okay, jamen så nøjes jeg med Singleton mønstret for nu :)

Smider du et svar?
Avatar billede arne_v Ekspert
02. maj 2005 - 20:23 #7
kommer her
Avatar billede segato Nybegynder
02. maj 2005 - 22:58 #8
Personligt ville jeg smide sådanne variable i din app.config.
Avatar billede arne_v Ekspert
02. maj 2005 - 23:00 #9
Jeg tror ikke at det connection string, men selve connection ...
Avatar billede jimgordon Nybegynder
03. maj 2005 - 08:26 #10
En anden måde vil være at lave en super klasse med din SqlConnection Conn og så lade alle dine database klasser arve fra den. Du kan ikke bruge dine form klasser da de allerede nedarver en form.

Se DaBasic super klassen (hedder vise en base klasse i C#) fra
http://www.c-sharpcorner.com/Tutorials/Building3TierAppPA.asp

Det er GetConnection() fra super klassen der nedarvet bruges som:
SqlConnection oConnection = GetConnection();

Du skal dog lige abstrahere fra at det er ASP.NET demoen ligger i.
Avatar billede arne_v Ekspert
03. maj 2005 - 08:33 #11
Den løsning giver en connection per instans ...
Avatar billede jimgordon Nybegynder
03. maj 2005 - 08:59 #12
En connection pr instans af hver formklassse ?
-så man får flere instanser af den samme connection, når der er flere forms ?
Vil det være bedre at ligge den i en singleton klasse (fremfor en super klasse) og og bruge en (og kun en) instans af den ?
Avatar billede arne_v Ekspert
03. maj 2005 - 09:11 #13
Jeg ved ikke om det er bedre. Men det var det som der blev spurgt om.
Avatar billede jimgordon Nybegynder
03. maj 2005 - 09:55 #14
okaj, prøver bare at blive klogere :)
Avatar billede arne_v Ekspert
03. maj 2005 - 10:04 #15
den artikel du linker til er ganske glimrende men falder bare lidt i 19:53:37 []
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester