@@ -40,6 +40,10 @@ public ModelTransferObject Read(Type type, List<ITransferObject> transferObjects
40
40
transferObjects . Add ( model ) ;
41
41
this . ReadEnum ( type , model ) ;
42
42
}
43
+ else if ( type . ContainsGenericParameters )
44
+ {
45
+ model . HasUsing = false ;
46
+ }
43
47
else if ( ! isFromSystem )
44
48
{
45
49
transferObjects . Add ( model ) ;
@@ -97,20 +101,28 @@ private void ReadClass(Type type, ModelTransferObject model, List<ITransferObjec
97
101
{
98
102
model . BasedOn = this . Read ( type . BaseType , transferObjects ) ;
99
103
}
100
- Dictionary < Type , string > genericMapping = new Dictionary < Type , string > ( ) ;
101
104
if ( type . IsGenericType )
102
105
{
106
+ Type genericType = type . GetGenericTypeDefinition ( ) ;
103
107
model . IsGeneric = true ;
104
108
model . Generics . Clear ( ) ;
105
- foreach ( Type argument in type . GenericTypeArguments )
109
+ if ( genericType is TypeInfo typeInfo )
110
+ {
111
+ for ( int index = 0 ; index < typeInfo . GenericTypeParameters . Length ; index ++ )
112
+ {
113
+ string alias = typeInfo . GenericTypeParameters [ index ] . Name ;
114
+ Type argument = type . GenericTypeArguments [ index ] ;
115
+ model . Generics . Add ( new GenericAliasTransferObject
116
+ {
117
+ Alias = alias ,
118
+ Type = this . Read ( argument , transferObjects )
119
+ } ) ;
120
+ }
121
+ type = genericType ;
122
+ }
123
+ else
106
124
{
107
- string alias = genericMapping . Count > 1 ? $ "T{ genericMapping . Count } " : "T" ;
108
- genericMapping . Add ( argument , alias ) ;
109
- model . Generics . Add ( new GenericAliasTransferObject
110
- {
111
- Alias = alias ,
112
- Type = this . Read ( argument , transferObjects )
113
- } ) ;
125
+ throw new InvalidOperationException ( "Internal Error l2sl3: Type is not a TypeInfo" ) ;
114
126
}
115
127
}
116
128
@@ -135,9 +147,7 @@ private void ReadClass(Type type, ModelTransferObject model, List<ITransferObjec
135
147
FieldTransferObject fieldTransferObject = new FieldTransferObject
136
148
{
137
149
Name = field . Name ,
138
- Type = genericMapping . ContainsKey ( field . FieldType )
139
- ? new TypeTransferObject { Name = genericMapping [ field . FieldType ] }
140
- : this . Read ( field . FieldType , transferObjects ) ,
150
+ Type = this . Read ( field . FieldType , transferObjects ) ,
141
151
Default = field . GetValue ( null )
142
152
} ;
143
153
model . Constants . Add ( fieldTransferObject ) ;
@@ -154,9 +164,7 @@ private void ReadClass(Type type, ModelTransferObject model, List<ITransferObjec
154
164
FieldTransferObject fieldTransferObject = new FieldTransferObject
155
165
{
156
166
Name = field . Name ,
157
- Type = genericMapping . ContainsKey ( field . FieldType )
158
- ? new TypeTransferObject { Name = genericMapping [ field . FieldType ] }
159
- : this . Read ( field . FieldType , transferObjects )
167
+ Type = this . Read ( field . FieldType , transferObjects )
160
168
} ;
161
169
model . Fields . Add ( fieldTransferObject ) ;
162
170
}
@@ -171,9 +179,7 @@ private void ReadClass(Type type, ModelTransferObject model, List<ITransferObjec
171
179
PropertyTransferObject propertyTransferObject = new PropertyTransferObject
172
180
{
173
181
Name = property . Name ,
174
- Type = genericMapping . ContainsKey ( property . PropertyType )
175
- ? new TypeTransferObject { Name = genericMapping [ property . PropertyType ] }
176
- : this . Read ( property . PropertyType , transferObjects ) ,
182
+ Type = this . Read ( property . PropertyType , transferObjects ) ,
177
183
Attributes = property . GetCustomAttributes ( ) . ToTransferObjects ( ) . ToList ( )
178
184
} ;
179
185
model . Properties . Add ( propertyTransferObject ) ;
0 commit comments