Oui, la Réflexion serait la voie à suivre. Tout d'abord, vous obtiendrez l' Type
qui représente le type (à l'exécution) de l'instance dans la liste. Vous pouvez le faire en appelant l' GetType
méthode Object
. Parce que c'est sur l' Object
classe, c'est appelable par chaque objet .NET, tous les types de dériver à partir de Object
(eh bien, techniquement, pas tout, mais ce n'est pas important ici).
Une fois que vous avez l' Type
exemple, vous pouvez appeler l' GetProperties
méthode pour obtenir l' PropertyInfo
des instances qui représentent le moment de l'exécution informationa sur les propriétés de l' Type
.
Remarque, vous pouvez utiliser les surcharges de GetProperties
pour permettre de classer les dont les propriétés vous récupérer.
À partir de là, vous serait tout simplement écrire les informations dans un fichier.
Votre code ci-dessus, traduit, serait:
// The instance, it can be of any type.
object o = <some object>;
// Get the type.
Type type = o.GetType();
// Get all public instance properties.
// Use the override if you want to classify
// which properties to return.
foreach (PropertyInfo info in type.GetProperties())
{
// Do something with the property info.
DoSomething(info);
}
Notez que si vous voulez des renseignements sur la méthode ou le champ de l'information, vous devez appeler l'une des surcharges de la GetMethods
ou GetFields
méthodes respectivement.
À noter également, c'est une chose de lister les membres d'un fichier, mais vous ne devriez pas utiliser cette information pour favoriser la logique basée sur les jeux de propriétés.
En supposant que vous avez le contrôle sur la mise en œuvre des types, vous devez dériver d'une classe de base commune ou de mettre en œuvre une interface commune et de faire des appels sur ceux (vous pouvez utiliser l' as
ou is
de l'opérateur pour déterminer la classe de base/l'interface vous travaillez à l'exécution).
Toutefois, si vous n'avez pas le contrôle de ces définitions de type et de conduire la logique basée sur le filtrage, alors que c'est bien.