FxBlog


Carlo Licciardi's Blog

Istanziare un oggetto a runtime conoscendo il nome della classe

Vi siete mai chiesti se fosse possibile istanziare un oggetto conoscendo a runtime il suo nome?
La risposta è naturalmente Sì 

Supponiamo di voler istanziare un oggetto ArrayList conoscendo il suo nome, completo di namespace di appartenenza: “System.Collections.ArrayList”

Dim className As String = "System.Collections.ArrayList"

In questo caso utilizziamo una stringa “cablata” nel codice ma il nome della classe da istanziare potrebbe provenire tranquillamente da una Console.ReadLine() o da un parametro di funzione.

Il primo passo da eseguire è ricavare l’oggetto System.Type corrispondente alla classe da generare.

Normalmente, avendo a disposizione l’oggetto di una data classe basta utilizzare
gettype(myObject) oppure myObject.GetType(), purtroppo in questo caso l’oggetto è quello che vogliamo ottenere, mentre ciò che abbiamo a disposizione è la stringa contenente il nome della classe.

Per ottenere l’oggetto Type corrispondente ad una particolare classe, partendo dalla stringa contenente il nome è necessario utilizzare il metodo Type.GetType(String).

Dim myClassType As Type = Type.GetType(className)

Una volta ricavato l’oggetto Type sarà necessario utilizzare la classe System.Activator ed in particolare il metodo statico Activator.CreateInstance(Type), che , partendo da un oggetto Type restituisce un istanza del tipo associato, upcastata ad Object.

Dim myObject As Object = Activator.CreateInstance(myClassType)

Et voilà, l'oggetto è servito

Categoria: VB.NET
venerdì, 17 mar 2006 Ore. 10.32
Archivio Posts
Anno 2007

Anno 2006
Statistiche
  • Views Home Page: 23.285
  • Views Posts: 16.527
  • Views Gallerie: 0
  • n° Posts: 12
  • n° Commenti: 7
Calendario
gennaio 2020
lmmgvsd
303112345
6789101112
13141516171819
20212223242526
272829303112
3456789
Mappa
Blogs Amici
Links
    Copyright © 2002-2007 - Blogs 2.0
    dotNetHell.it | Home Page Blogs
    ASP.NET 2.0 Windows 2003