Avatar billede wired Nybegynder
14. februar 2007 - 20:54 Der er 4 kommentarer og
1 løsning

Profile.Properties

Prøver at få et liste over alle de static members til profile, men kan ikke få det til virker.

Troede jeg kunne bruge: Profile.Properties

Se også http://www.eksperten.dk/spm/762439
Avatar billede kalp Novice
15. februar 2007 - 00:13 #1
ville nok lave det i xml.
kan godt gøres nemt med lidt xpath, xmldocument og en foreach løkke.
Avatar billede snepnet Nybegynder
15. februar 2007 - 01:53 #2
Det er ikke så slemt med reflection:

PropertyInfo[] properties = Profile.GetType().GetProperties(BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly);
foreach(PropertyInfo property in properties)
{
  string propertyName = property.Name;
}

De er for øvrigt ikke static.

Mvh
Avatar billede wired Nybegynder
15. februar 2007 - 07:55 #3
gawi: Jeg havde midlertid lavet det med xmldocument, hvilket løse problemet problemet midlertidigt.

Der måtte være en løsning a la den snepnet kom frem til. Hvilket passer mig fint.

Hvis de ikke er stastiske - hvad er de så?

Det lykkedes mig dog helt tilfældigt i aftes at finde den optimale løsning:
ProfileBase.Properties
Hvem kunne gætte det? .NET kan meget men det kan være svært at finde det man søger.

Det giver dog points til snepnet, da det også svare til en løsning.

Send lige et svar.
Avatar billede snepnet Nybegynder
15. februar 2007 - 12:19 #4
Et svar kommer her :o)

Var egentlig lidt mere fokuseret på reflection-tingen, da der stod noget om det i det spørgsmål du henviste til - og det er en helt generel måde at undersøge typer på, og kan ofte være en fiks ting at have ved hånden.

Det er almindelige instanser du arbejder på når du f.eks. laver en
string s = Profile.SomeText;

Ud fra det du skriver i din konfigurationsfil, får du skabt en klasse som får navnet ProfileCommon - baseret på ProfileBase.... F.eks. sådan en her:

public class ProfileCommon : ProfileBase
{
      public ProfileCommon();
      public virtual ProfileCommon GetProfile(string username);

      public virtual int NumberProperty { get; set; }
      public virtual string TextProperty { get; set; }
}

Kigger du på implementeringen af dine properties - ser de ud som følger:

public virtual int NumberProperty
{
      get
      {
            return (int) base.GetPropertyValue("NumberProperty");
      }
      set
      {
            base.SetPropertyValue("NumberProperty", value);
      }
}

Altså... De benytter metoder i baseklassen (ProfileBase) til at hente/sætte værdierne med (ender for øvrigt med at kald til basen for ProfileBase some hedder SettingsBase).

Men.... 
ProfileBase.Properties
Er en static property, og i implementering af den sikres det - at dine settings instantieres (hvis det ikke er sket tidligere).

Mvh
Avatar billede wired Nybegynder
15. februar 2007 - 21:46 #5
Har læst lidt om reflection men fandt det kun sjældent anvendeligt (her er det dog aktuelt).

Fedt med informationen. Hvordan finder man sådan en information:

"Ud fra det du skriver i din konfigurationsfil, får du skabt en klasse som får navnet ProfileCommon"

Syntes at have læst et par bøger om asp.net men har ikke lige kunne udlede dette.

Tak for svaret og fuldt berettet points.
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