13. september 2007 - 09:36Der er
19 kommentarer og 1 løsning
Oprette klasseinstans ud fra string?
Hej eksperter!
Hvordan kan jeg oprette en klasseinstans med navn som en kendt string? Jeg skal bruge det til dynamisk at oprette instanser ud fra en string, således at klassens name-egenskab får værdien af strengen.
Du vil dynamisk oprette en instans af en klasse ud fra dens navn ? Er det dét, der er spørgsmålet ?
I så fald, kan du få fat i typen vha. Type.GetType og så bruge Activator klassen til at lave en instans af samme:
using System;
namespace TestStuff { public class TestClass {}
public class Program { static void Main(string[] args) { string className = "TestStuff.TestClass, TestStuff"; Type type = Type.GetType(className); object instance = Activator.CreateInstance(type); Console.WriteLine("Instance is of type: {0}", instance.GetType()); } } }
Synes godt om
Slettet bruger
14. september 2007 - 20:32#4
Nej, driis, som jeg skrev: Ud fra en string. Faktisk noget i stil med hvad nielle skrev. Dog havde jeg håbet, at der var en lettere metode end først at oprette instansen med et tilfældigt navn og derefter ændre det, men hvad... Bare smid et svar, nielle.
Jeg er stadig ikke 100% sikker på at jeg har forstået spørgsmålet rigtigt.
Hvis mit svar er forkert, så afvis det endelig. Hvis du vil oprette en instans og instansiere den med "name" field eller property til det du giver med, så er nielle's og arne's svar helt korrekt.
Synes godt om
Slettet bruger
15. september 2007 - 10:02#8
Øh... ingen af jer har vist forstået det rigtigt ^^ Jeg vil eksempelvis kunne oprette instansen EnInstans hvor navnet (EnInstans) er defineret ved en string... Altså eksempelvis ud fra en eller anden string kaldet EnString således at hvis EnString er sat til "EtEllerAndet" bliver instansens navn når den oprettes EtEllerAndet.
Hm. Jeg havde på fornemmelsen, at det ikke kunne lade sig gøre... Jeg skal bruge det til en funktion, der skal oprette instanser ud fra argumenterne. Men ja, der er andre måder at gøre det på... Én af dem er i mit tilfælde at droppe funktionen og selv skrive den nødvendige kode hver gang. Det behøves heller ikke være så besværligt, men det kræver at jeg finder ud af, hvordan jeg opretter navngivne instanser i en List<>. Hvordan gør jeg så det? Altså i stedet for MinList.Add(new MinKlasse("argument"))... Måske MinList.Add(MinKlasse Noget = new MinKlasse("argument"))?
Huh? Laver dit eksempel en instans af MinKlasse med navnet Noget og argumentet "argument"? Det gør præcis det, jeg skal bruge koden til :) Jeg læser lige lidt om Dictionory-klassen, bare smid et svar.
Synes godt om
Slettet bruger
15. september 2007 - 22:24#15
*Dictionary... Men det lyder yderst anvendeligt :)
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.