Warum gibt typeof(Array).IsArray false zurück?

Post a reply

Smilies
:) :( :oops: :chelo: :roll: :wink: :muza: :sorry: :angel: :read: *x) :clever:
View more smilies

BBCode is ON
[img] is ON
[flash] is OFF
[url] is ON
Smilies are ON

Topic review
   

Expand view Topic review: Warum gibt typeof(Array).IsArray false zurück?

by Guest » 03 Jan 2025, 13:13

Ich erstelle einen Codegenerator, der Klassen aus einem Schema generiert. Ein Typ aus einem solchen Schema könnte doppelte Mitglieder haben, die mehrere Textzeilen oder ähnliches zulassen. Ich möchte das lösen, indem ich beim ersten Vorkommen eine Eigenschaft erstelle und diese Eigenschaft dann bei weiteren Vorkommen in ein Array hochstufe.
Zu meiner Überraschung kann ich beim Ausgeben der Klasse sehen, dass i Ich habe ein Mitgliedsfeld und eine Eigenschaft vom Basistyp und nicht vom Typ Array!
Der Teil dieses Codes, in dem ich ein Hintergrundfeld in ein Array umwandele, wird hier gezeigt:

Code: Select all

var memberFieldType = new CodeTypeReference(typeof(Array)) { ArrayElementType = property.MemberField.Type };
property.MemberField = new CodeMemberField(memberFieldType, property.MemberField.Name);
property.MemberField.InitExpression = new CodeArrayCreateExpression(memberFieldType, property.Count);

Weitere Untersuchungen ergaben, dass „typeof(Array).IsArray „false“ zurückgibt und dass der CSharpCodeGenerator den falschen Typ für das Mitgliedsfeld und die Eigenschaft generiert.< /p>
Hat jemand eine Idee, warum typeof(Array).IsArray false zurückgibt?

Top