Avatar billede funkyloonie Nybegynder
24. september 2002 - 13:32 Der er 10 kommentarer og
1 løsning

Oprette objekt ud fra streng

Jeg søger et eksempel på at oprette et objekt vha Activator.CreateInstance(...). Jeg har desværre lidt problemer med at få oprettet et objekt ud fra en streng læst fra en fil.

Eksemplet skal oprette instanset udfra en streng som er klassen som der skal instantieres et objekt af. Strengen kunne se sådan ud "minKlasse".
Avatar billede simon.ulsnes Nybegynder
24. september 2002 - 13:40 #1
Er du sikker på at det ikke kan klares med:

switch (DinStreng)
{
  case "DinKlasse1":
    DinKlasse1 dk = new DinKlasse1();
    break;
  case "DinKlasse2":
    DinKlasse2 dk = new DinKlasse2();
    break;
  default:
    DinKlasse dk = new DinKlasse();
    break;
}

// Simon
Avatar billede funkyloonie Nybegynder
24. september 2002 - 13:43 #2
Ja det er jeg er sikker på. Systemet skal fremtidsikres og der ved jeg jo ikk hvad klassen kommer til at hede.
Avatar billede simon.ulsnes Nybegynder
24. september 2002 - 13:45 #3
OK så. Men er det ikke en lidt usikker måde at gøre det på?
Avatar billede funkyloonie Nybegynder
24. september 2002 - 13:50 #4
nej. det er nemt at udskifte lagene i en arkitektur ved at ændre en navn i en simpel tekstfil. navnet kunne også stå i en database eller lign. men pointen er at man ikke skal ind og ændre i de dll'er/klasser mm. som ikke skal skiftes ud. Lav kobling er målet.
Avatar billede odegaard Nybegynder
24. september 2002 - 14:01 #5
Jeg er enig med Simon om at din fremgangsmåde er lidt ustabil. Istedet bør du tænke på en anden måde, hvor du har et standard-element som du kan associere med et navn fra en tekstfil.
Den anden metode dur slet og ret ikke.
Avatar billede kichian Nybegynder
24. september 2002 - 14:08 #6
Hvori består dit problem? Er det indlæsning fra fil som er problemet eller?
Avatar billede funkyloonie Nybegynder
24. september 2002 - 14:10 #7
jeg er da åben overfor nye ideer. min fremgangsmåde har virket fint tidligere projekter. Dette er dog det første jeg koder i vb .net så derfor kender jeg ikke kommandoen. hvordan vil I så gøre lagene i arkitekturen uafhængige af hinanden?? hvordan koder I?? hvordan laver I jeres lagdelte arkitektur?? efter nogle bestemte mønstre/patterns???

Problemet er selve parameterne som skal indsættes i Activator.CreateInstance(...)
Avatar billede funkyloonie Nybegynder
24. september 2002 - 14:12 #8
>>jeg ved ikke hvad der præcist skal stå i ovenævnte og objektet bliver vist ikk oprettet som det burde...
Avatar billede funkyloonie Nybegynder
24. september 2002 - 14:15 #9
så jeg mangler lidt et eksempel at se på...
Avatar billede kichian Nybegynder
24. september 2002 - 15:09 #10
funkyloonie er ikke så tosset endda. Det er et accepteret pattern at kunne oprette objekter dynamisk (kan ikke huske hvilket). Og kan endda være temmelig brugbart. ISÆR i forbindelse med Interfaces.

Jeg baksede en lille eksempel sammen i C#, som åbner en Form i et VB-Projekt:

            Assembly abDenne = Assembly.LoadFrom(@"C:\Documents and Settings\kcr\My Documents\Visual Studio Projects\VBConcept\bin\VBConcept.exe");
            Type enType = abDenne.GetType("VBConcept.frmMain");
            Object objektet = Activator.CreateInstance(enType);
            System.Windows.Forms.Form ttForm = objektet as Form;
            if (ttForm == null)
            {
                txtFejl.Text = "Øv";
            }
            else
            {
                ttForm.Show();
            }
Avatar billede funkyloonie Nybegynder
24. september 2002 - 18:42 #11
løsningen ser udemærket ud. Så må jeg lige skrive den om til vb .net. angående interfaces så har kichian fat i den lange ende, og ja jeg bruger dem meget. jeg kan simpelthen ikke undvære dem.
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
Kurser inden for grundlæggende programmering

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