|
auteur : cardi |
La classe Type est la base de la réflexion. Elle permet d'obtenir des informations concernant un type donné comme les constructeurs, méthodes, champs, évènements, ...
Le mot-clé typeof, quant à lui, permet de récupérer une instance de la classe Type par rapport au type de la classe passé en paramètre.
public static void Main ()
{
foreach (MemberInfo Mi in typeof (Customer). GetMembers ())
{
if (Mi. MemberType = = MemberTypes. Method)
Console. WriteLine (" Méthode : {0} " , Mi. ToString ());
else if (Mi. MemberType = = MemberTypes. Field)
Console. WriteLine (" Champs : {0} " , Mi. ToString ());
else if (Mi. MemberType = = MemberTypes. Constructor)
Console. WriteLine (" Constructeur : {0} " , Mi. ToString ());
}
}
public class Customer
{
public int Id;
public String Name;
public void MethodA (String paramA, int paramB)
{
}
}
|
|
|
auteur : cardi |
Pour instancier une classe à partir d'un type, il vous faudra utiliser la classe Activator :
namespace ConsoleApplication1
{
public class Test
{ }
class Program
{
static void Main (string [ ] args)
{
System. Type objType = typeof (Test);
object objInstanceDynamique = System. Activator. CreateInstance (objType);
Test objTest = objInstanceDynamique as Test;
}
}
}
|
|
lien : System.Activator (MSDN)
|
|
auteur : cardi |
Pour instancier une classe à partir d'une chaine de caractères, il vous faudra dans un premier temps transformer cette chaine en un objet de type Type.
A partir de l'objet Type obtenu, vous pourrez créer une instance grâce à la classe Activator :
namespace ConsoleApplication1
{
public class Test
{ }
class Program
{
static void Main (string [ ] args)
{
System. Type objType = System. Type. GetType (" ConsoleApplication1.Test " );
if (objType ! = null )
{
object objInstanceDynamique = System. Activator. CreateInstance (objType);
Test objTest = objInstanceDynamique as Test;
}
else
{
System. Console. WriteLine (" Le type semble être incorrect! " );
}
}
}
} }
|
|
lien : System.Activator (MSDN)
lien : System.Type (MSDN)
|
|
auteur : cardi |
Grâce à la réflexion, il est possible d'obtenir énormément d'informations à partir du type d'une classe.
Pour vérifier si une classe implémente une interface, il vous suffira d'utiliser la méthode GetInterface de la classe Type :
namespace ConsoleApplication1
{
public interface IMonInterface
{ }
public class Test : IMonInterface
{ }
class Program
{
static void Main (string [ ] args)
{
System. Type objType = typeof (Test);
System. Type objTypeInterface = objType. GetInterface (" ConsoleApplication1.IMonInterface " , false );
if (objTypeInterface ! = null )
System. Console. WriteLine (" La classe 'Test' implémente l'interface 'IMonInterface' ! " );
else
System. Console. WriteLine (" La classe 'Test' n'implémente pas l'interface 'IMonInterface' ! " );
}
}
}
|
|
lien : System.Type (MSDN)
|
Consultez les autres F.A.Q's


Les sources présentées sur cette page sont libres de droits
et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation
constitue une œuvre intellectuelle protégée par les droits d'auteur.
Copyright © 2010 Developpez Developpez LLC.
Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne
peut être faite de ce site ni de l'ensemble de son contenu : textes, documents
et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez
selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.