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?
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]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);
[/code]
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?