La création d'un objet sans en connaître le nom de la classe au moment de la conception

StackOverflow https://stackoverflow.com/questions/53649

  •  09-06-2019
  •  | 
  •  

Question

L'aide de la réflexion, j'ai besoin d'étudier un utilisateur DLL et créer un objet d'une classe en elle.

Quelle est la manière la plus simple de le faire?

Était-ce utile?

La solution

Autres conseils

System.Reflection.Assembly est la classe que vous souhaitez utiliser.Il contient beaucoup de méthode d'itération sur les types de contenus avec un utilisateur DLL.Vous pouvez parcourir chaque classe, peut-être voir s'il hérite d'une interface particulière, etc.

http://msdn.microsoft.com/en-us/library/system.reflection.assembly_members.aspx

Enquêter sur Assembly.GetTypes() méthode pour obtenir la liste des types, ou Assembly.GetExportedTypes() pour le public seulement.

Vous pouvez créer une instance d'une classe à partir d'un Type d'objet à l'aide de l'Activateur.La méthode CreateInstance, pour obtenir tous les types dans une dll, vous pouvez utiliser de l'Assemblée.GetTypes

Jetez un oeil à ces liens:

http://www.java2s.com/Code/CSharp/Development-Class/Createanobjectusingreflection.htm

http://msdn.microsoft.com/en-us/library/k3a58006.aspx

Fondamentalement, vous utilisez de la réflexion pour charger un assembly, puis de trouver un type qui vous intéresse.Une fois que vous avez le type, vous pouvez demander de trouver que c'est de constructeurs ou d'autres méthodes / propriétés.Une fois que vous avez le constructeur, vous pouvez l'appeler.Facile!

Comme il a déjà été dit, vous avez besoin pour pousser le Système.La réflexion de l'espace de noms.

Si vous savez à l'avance le lieu/nom de la DLL à charger, vous devez parcourir l'Assemblée.GetTypes().

En Pseudo-code, il ressemblerait à quelque chose comme ceci:

Créer et l'assemblage de l'objet.

Itérer sur tous les types contenus dans l'assemblée.

Une fois que vous trouver celui que vous cherchez, appelez-le (CreateInstance)...

Utiliser à bon escient.

;)

J'ai beaucoup de code de Réflexion si vous voulez prendre un coup d'oeil autour, mais la tâche est très simple et il y a au moins une dizaine d'articles avec des échantillons en dehors dans le sauvage.(Aka Google).Malgré cela, le MSDN est votre ami pour la Réflexion de Référence.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top