2009-10-09 9 views
1

Je parcours l'objet et initialise toutes les propriétés de cet objet. Tout d'abord, le type de l'objet i.e classe a été placé dans mon même projet et cela a bien fonctionné. Maintenant, j'ai déplacé la classe dans un projet différent mais en faisant toujours le même objet en utilisant AssemblyName.Namespace.Class mais il a cessé de fonctionner.Type.GetType Échec mais property.PropertyType Fonctionne bien

Voici mon code précédent:

var o = Activator.CreateInstance(Type.GetType(property.PropertyType.Name)); 

qui précède toujours retourné null. Donc, j'ai essayé ce qui suit:

var o = Activator.CreateInstance(property.PropertyType); 

et il a travaillé et créé l'objet correct. Je suis curieux de savoir pourquoi cela est arrivé!

Répondre

4

Type.GetType(string) requiert le complet nom du type, y compris les informations d'assemblage, sauf si le type figure dans le même assembly que l'appelant ou mscorlib. De plus, vous devez vous assurer que vous avez aussi l'espace de noms. Donc, Type.FullName devrait fonctionner dans le même assemblage ou mscorlib, et Type.AssemblyQualifiedName devrait toujours fonctionner.

Mais bon, si vous avez déjà le type comme Type de la propriété PropertyType, il n'y a pas de point d'appeler Type.GetType de toute façon :)

+0

Merci Jon! Tu as raison! J'ai déjà PropertyType donc pas besoin d'appeler Type.GetType :) –

Questions connexes