24. september 2002 - 13:32Der 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".
I lang tid har samarbejdsbranchen fokuseret på at forbedre enhedsfunktioner – bedre kameraer, klarere lyd og smartere software. Men den virkelige forvandling handler ikke om funktioner.
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.
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.
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(...)
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(); }
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.
Synes godt om
Ny brugerNybegynder
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.