Meine C# -Klasse MyClass (unten) hat Mitglieder a, b, c, d, e und f.Reflektion in C# - will eine Liste der Datentypen einer Klasse 'Felder
Ich möchte Reflection verwenden, um eine Liste der Datentypen dieser Mitglieder zu erhalten; zum Beispiel (Ausleihe aus Python-Notation): [char [], ushort, char, byte, 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) ;
}
}
Programmausgabe erscheint wie folgt:
<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
Ich würde Programm Ausgabe gerne wie folgt aussehen:
<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
In Ihrem Beitrag die aktuelle Ausgabe und was Sie sagen, Sie die Ausgabe identisch sein sollen, werden sollen. Ich nehme an, Sie möchten etwas anderes als das, was Sie gepostet haben, also bearbeiten Sie bitte Ihre Frage, um zu klären, was Ihre gewünschte Ausgabe tatsächlich ist. –
Um das Format beizubehalten, müssen Sie um vier einrücken. Ich habe es für dich getan. Übrigens, es heißt "Reflection", nicht "Introspektion". –
Ich verstehe den Unterschied zwischen den beiden Ausgaben nicht. Die gewünschte Ausgabe wiederholt nur Spalte 4 ohne die spitzen Klammern. –