|
| 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.