2011-07-29 5 views
0

Je voudrais instancier un objet d'une classe générique pendant l'exécution; J'appelle une méthode qui me rend un Objet Type; Je voudrais convertir cette classe générique en classe spécifique, puis instancier les objets de cette classe. C'est possible? Je l'habitude d'écrire en Java:Coulée d'exécution de l'objet Type

Class<DBConnectionProvider> dBConnectionProviderClass = 
       (Class<DBConnectionProvider>)Configuration.getInstance().getDbConnectionProviderClass(); 

La méthode getDbConnectionProviderClass() retourne un objet de classe qui est convertie en exécution; Dans mon application C#, cette méthode retourne un objet Type; est-il possible de convertir ceci dans DBConnectionProvider et d'instancier une classe de ceci? Merci pour vos réponses.

+1

Pourquoi est-ce tagged "java"? – driis

+0

@driis "J'avais l'habitude d'écrire en Java:" avec un exemple Java? –

+0

Que se passe-t-il si j'ai une classe générique étendue, comme Classe dbConnectionProviderExtClass = (Classe ) getDbConnectionProviderClass()) –

Répondre

0

Une fois que vous avez l'objet de type que vous avez juste besoin d'appeler:

object o = Activator.CreateInstance([your type]).Unwrap(); 

ou si vous devez fournir des arguments du constructeur:

object o = Activator.CreateInstance([your type], obj1,obj2...).Unwrap(); 

Et puis jeté à votre type.

+0

vous voulez dire l'objet Type, n'est-ce pas? –

+0

Oui, j'ai édité – jaywayco

+0

Et si à la place de la classe j'ai classe ? –

0

Exemple simple de créer des instances de classes avec réflexion (Java)

import java.awt.Rectangle; 

public class SampleNoArg { 

    public static void main(String[] args) { 
     Rectangle r = (Rectangle) createObject("java.awt.Rectangle"); 
     System.out.println(r.toString()); 
    } 

    static Object createObject(String className) { 
     Object object = null; 
     try { 
      Class classDefinition = Class.forName(className); 
      object = classDefinition.newInstance(); 
     } catch (InstantiationException e) { 
      System.out.println(e); 
     } catch (IllegalAccessException e) { 
      System.out.println(e); 
     } catch (ClassNotFoundException e) { 
      System.out.println(e); 
     } 
     return object; 
    } 
}