Ma classe C# MyClass (ci-dessous) a des membres a, b, c, d, e et f.Réflexion en C# - veut une liste des types de données des champs d'une classe
Je voudrais utiliser la réflexion pour obtenir une liste des types de données de ces membres; Par exemple (empruntant à la notation Python): [char [], ushort, char, octet, uint, ulong]
class MyClass
{
public char [ ] a ;
public ushort b ;
public char c ;
public byte d ;
public uint e ;
public ulong f ;
}
class MainClass
{
public static void Main (string [] args)
{
// get an array (or some kind of list) of MyClass' fields' data types ...
// for example: { char[], ushort, char, byte, uint, ulong }
// I've tried the following, but can't get a column of just the data types, alone ...
MemberInfo[] theMemberInfoArray = typeof(MyClass).GetMembers() ;
foreach (MemberInfo mi in theMemberInfoArray)
if (mi.MemberType == MemberTypes.Field)
Console.WriteLine ("<" + mi.MemberType + ">\t"
+ "<" + mi.GetType() + ">\t"
+ "<" + mi.Name + ">\t" + mi) ;
}
}
sortie du programme apparaît comme ci-dessous:
<Field> <System.Reflection.RtFieldInfo> <a> Char[] a
<Field> <System.Reflection.RtFieldInfo> <b> UInt16 b
<Field> <System.Reflection.RtFieldInfo> <c> Char c
<Field> <System.Reflection.RtFieldInfo> <d> Byte d
<Field> <System.Reflection.RtFieldInfo> <e> UInt32 e
<Field> <System.Reflection.RtFieldInfo> <f> UInt64 f
Je voudrais sortie du programme apparaisse comme:
<Field> <System.Reflection.RtFieldInfo> <a> <Char[]> Char[] a
<Field> <System.Reflection.RtFieldInfo> <b> <UInt16> UInt16 b
<Field> <System.Reflection.RtFieldInfo> <c> <Char> Char c
<Field> <System.Reflection.RtFieldInfo> <d> <Byte> Byte d
<Field> <System.Reflection.RtFieldInfo> <e> <UInt32> UInt32 e
<Field> <System.Reflection.RtFieldInfo> <f> <UInt64> UInt64 f
Dans votre message la sortie réelle et ce que vous dites que vous voulez que la sortie soit identiques. Je suppose que vous voulez quelque chose d'autre que ce que vous avez posté, alors s'il vous plaît modifier votre question pour clarifier ce que votre sortie souhaitée est réellement. –
Vous devez mettre en retrait par quatre pour conserver le format. Je l'ai fait pour toi. BTW, ça s'appelle "Reflection", pas "introspection". –
Je ne comprends pas la différence entre les deux sorties. La sortie désirée consiste simplement à répéter la colonne 4 sans les chevrons. –