Jag sitter och brottas med ett problem i C#, som jag gissar är ganska vanligt. System.Reflection är det du ska ha. Varför vill du generera ett instansnamn? själva instansnamnet är ju totalt ointressant. Johan, jag kom på att jag inte hade något problem. Jag insåg till slut, precis som du skriver, att instansnamnet är fullkomligt ointressant. Nåväl, jag lärde mig min läxa - att skilja på objektet och instansnamnet (det är detsamma som identifier, eller?). Generera instansnamn via gränssnitt
Jag försöker att skapa ett gränssnitt där man kan instansiera objekt.
Mitt problem är att jag inte vet hur man kan generera ett objekts
instansnamn. Jag hade tänkt att göra det ifrån en string typ något i
den här stilen:
string stringvariabel = "Blaha";
objekt eval(stringvariabel) = new object ();
Men det finns ingen funktion av typen eval(), som jag har stött på i några script-språk - jag gissar att en sådan inte skulle fungera när programmet ska kompileras. Hur ska jag angripa det här problemet? Känner någon till någon bra artikel som tar upp problemet med att generera instansnamn? Jag gissar att det här är ett välkänt problem och att det finns lösningar på det.
Har någon någon idé? Jag har sökt på webben och lite varstans efter lösningar, men jag vet inte riktigt vad jag ska söka på.
Tack på förhand!Sv: Generera instansnamn via gränssnitt
Ungefär (finns varianter)
1) Skaffa referens till assembly (t.ex. Assembly.Load*)
2) Skaffa referens till modulen i assemblyt
3) Anropa GetType med din sträng och få en type tillbaka.
4) Anropa System.Activator.Create* med din type och få ett nytt objektSv: Generera instansnamn via gränssnitt
Om du förklarar lite bättre vad det är du vill åstadkomma så tror jag att vi nog kan komma på en bra lösning till dig.
Om du vill associera ett visst objekt med ett unikt namn så tycker jag att du skall kolla på hashtableSv:Generera instansnamn via gränssnitt
Så här i efterhand känns det nästan pinsamt. Vilket hål i min programmeringskunskap!
Men tack ändå!