Comment puis-je créer une instance à partir d'une chaîne de caractères en C#?
Je suis en train de lire des informations à partir d'un fichier XML qui contient le type d'un objet que j'ai besoin d'instancier ainsi que les paramètres du constructeur.
Le type d'objet est en fait dans un autre projet, au sein d'une fratrie de l'espace de noms. (J'ai besoin de créer une Entreprise.Project2.Type au sein de l'Entreprise.Projet1 classe.)
J'ai trouvé cette question, mais il ne gère pas les paramètres du constructeur, ou le fait que c'est dans un autre espace de noms.
Comment puis-je faire cela?
Edit: Le nom de l'assemblage et de l'espace de noms par défaut n'est pas correctement configuré dans les propriétés du projet.
OriginalL'auteur Ben S | 2009-03-15
Vous devez vous connecter pour publier un commentaire.
Type.GetType()
, y compris l'espace de noms, par exemple "de la Société.Project2.Tapez"Company.Project2.dll
, vous pouvez spécifier "de l'Entreprise.Project2.Type De L'Entreprise.Projet2".Activateur.CreateInstance(Type, de l'Objet[])
ou trouver le constructeur que vous voulez avecType.GetConstructor()
et ensuite appelerConstructorInfo.Invoke()
.Si cela ne fonctionne pas, pouvez-vous donner plus d'informations.
J'ai aussi essayé le "Faucheur.Le GamePlay.Prop, Reaver.GamePlay" en vain.
Ce montage est-il? C'est l'assemblée fortement typé?
Je crois qu'il est impossible d'utiliser ce code génère une Chaîne de caractères de l'objet depuis il ne marche pas avoir un constructeur.(À mon humble avis) .... Pouvez-vous veuillez donner une alternative pour la chaîne ?
Il y a plusieurs constructeurs pour
string
. Jetez un oeil sur le site MSDN. Mais dans le cas de la chaîne, il sera probablement la peine de spécial-boîtier de seulement utiliser les données de chaîne directement.OriginalL'auteur Jon Skeet
Si vous souhaitez créer un type dynamiquement au moment de l'exécution, de l'Activateur.Méthode CreateInstance va le faire pour vous. Si vous le problème est avec le type d'avoir un constructeur avec paramètres, cette surcharge sera ce faire.
Par exemple,
http://msdn.microsoft.com/en-us/library/wcxyzt4d.aspx
Je vous conseille de regarder à travers les surcharges pour la meilleure correspondance.
L'espace de noms problème ne devrait pas être relavant - aussi longtemps que la dll se trouve dans le répertoire bin ou le GAC, vous devriez être OK. Les règles peuvent changer si l'assemblée est nommé Fortement.
Pourrait vous fournir un code snippiet du code qui ne fonctionne pas (à l'aide de la méthode est lié à)? Ce + les erreurs que vous voyez sera très utile!
[mise à jour]
Rapide de l'échantillon à l'aide de l'Activateur.CreateInstance qui gère les Constructeurs w/paramètres.
OriginalL'auteur brian chandley