Globale konstanter udenfor assembly
HejDette bliver nok et lidt sjovt spørgsmål.
Det er muligt at det ligger lige til højre benet og det er muligt at det er helt hen i vejret.
Mit store problem er at jeg gerne vi arbejde med SUPER globale konstanter, dvs. konstante der er tilgængelige indenfor et namespace, MEN som ikke er kompileret med i assembly (hvis det nogen mening)
Den bedste måde at forklare det på er ved at forestille sig at man udvikler et website i ASP.NET og gerne vil kunne vælge imellem dansk og engelsk (f.eks. via en application setting key i web.config)
Jeg ser nogle forskellige muligheder:
1. At have 2 web.config filer i "skifte imellem" hvor alle teksterkonstanter (label tekster) er noteret i hvert sit sprog
Ulempen er bare at koden bliver grim og bøvlet hvis jeg skal tilgå konstanter ved:
TestLabel.Text = TestConfigurationSettings.AppSettings["DKConstantEksempel"].ToString();
2. At bruge f.eks. Application_Start i global.asax til noget a'la:
********************************
Hashtable _Labels = new Hashtable(50);
_Labels.Add("DKLabel", "Navn");
Application.Add("_Labels", _Labels);
********************************
hvilket ville kunne bruges i code behind filerne som:
********************************
Hashtable _Labels = (Hashtable)Application["_Labels"];
TestLabel.Text = _Labels["DKLabel"].ToString();
********************************
men i dette tilfælde ligger konstanterne i den kompilerede assembly og kan der ikke ændres så længe applicationen kører.
3. Ligge alle konstanter i en klasse for sig selv, hvilket giver samme probleme som i 2, i det at konstanter dermed bliver kompilerede med i assembly...
I ASP (3.0) kunne man lave en include på hver .asp side hvor konstanterne skulle bruges og tilgå dem den vej, men dengang blev koden heller ikke kompilerede een gang men i stedet for hvert request, hvilket betød at man bare kunne skifte den inkluderede fil ud under kørsel.
Any good ideas?
Mvh Søren
