@@ -130,31 +130,37 @@ TypeReference typeReference
130130 {
131131 var genericParameter = ( Mono . Cecil . GenericParameter ) typeReference ;
132132 var declarerIsMethod = genericParameter . Type == GenericParameterType . Method ;
133- var declaringType = GetOrCreateStubTypeInstanceFromTypeReference (
134- declarerIsMethod
135- ? genericParameter . DeclaringMethod . DeclaringType
136- : genericParameter . DeclaringType
137- ) ;
138- var declaringMethod = declarerIsMethod
139- ? GetOrCreateMethodMemberFromMethodReference (
140- declaringType ,
141- genericParameter . DeclaringMethod
142- )
143- : null ;
144- var declarerFullName =
145- declaringMethod != null
146- ? declaringMethod . Member . FullName
147- : declaringType . Type . FullName ;
133+ var declarerFullName = declarerIsMethod
134+ ? genericParameter . DeclaringMethod . BuildFullName ( )
135+ : genericParameter . DeclaringType . BuildFullName ( ) ;
136+ var declaringTypeAssemblyName = declarerIsMethod
137+ ? genericParameter . DeclaringMethod . DeclaringType . Module . Assembly . FullName
138+ : genericParameter . DeclaringType . Module . Assembly . FullName ;
148139 var assemblyQualifiedName = System . Reflection . Assembly . CreateQualifiedName (
149- declaringType . Type . Assembly . FullName ,
140+ declaringTypeAssemblyName ,
150141 $ "{ declarerFullName } +<{ genericParameter . Name } >"
151142 ) ;
152143 if ( _allTypes . TryGetValue ( assemblyQualifiedName , out var existingTypeInstance ) )
153144 {
154145 return existingTypeInstance ;
155146 }
147+ var isCompilerGenerated = genericParameter . IsCompilerGenerated ( ) ;
148+ var variance = genericParameter . GetVariance ( ) ;
149+ var typeConstraints = genericParameter . Constraints . Select ( con =>
150+ GetOrCreateStubTypeInstanceFromTypeReference ( con . ConstraintType )
151+ ) ;
156152 var result = new TypeInstance < GenericParameter > (
157- CreateGenericParameter ( genericParameter , declaringType , declaringMethod )
153+ new GenericParameter (
154+ declarerFullName ,
155+ genericParameter . Name ,
156+ variance ,
157+ typeConstraints ,
158+ genericParameter . HasReferenceTypeConstraint ,
159+ genericParameter . HasNotNullableValueTypeConstraint ,
160+ genericParameter . HasDefaultConstructorConstraint ,
161+ isCompilerGenerated ,
162+ declarerIsMethod
163+ )
158164 ) ;
159165 _allTypes . Add ( assemblyQualifiedName , result ) ;
160166 return result ;
@@ -199,7 +205,7 @@ TypeReference typeReference
199205 } while ( elementType . IsArray ) ;
200206 var elementTypeInstance = GetOrCreateStubTypeInstanceFromTypeReference ( elementType ) ;
201207 var assemblyQualifiedName = System . Reflection . Assembly . CreateQualifiedName (
202- elementTypeInstance . Type . Assembly . FullName ,
208+ elementTypeInstance . Type . Assembly ? . FullName ?? "" ,
203209 typeReference . BuildFullName ( )
204210 ) ;
205211 if ( _allTypes . TryGetValue ( assemblyQualifiedName , out var existingTypeInstance ) )
@@ -609,35 +615,6 @@ IGenericParameterProvider genericParameterProvider
609615 . Cast < GenericParameter > ( ) ;
610616 }
611617
612- private GenericParameter CreateGenericParameter (
613- Mono . Cecil . GenericParameter genericParameter ,
614- ITypeInstance < IType > declaringTypeInstance ,
615- [ CanBeNull ] MethodMemberInstance declaringMethodInstance
616- )
617- {
618- var isCompilerGenerated = genericParameter . IsCompilerGenerated ( ) ;
619- var variance = genericParameter . GetVariance ( ) ;
620- var typeConstraints = genericParameter . Constraints . Select ( con =>
621- GetOrCreateStubTypeInstanceFromTypeReference ( con . ConstraintType )
622- ) ;
623- var declarerFullName =
624- declaringMethodInstance != null
625- ? declaringMethodInstance . Member . FullName
626- : declaringTypeInstance . Type . FullName ;
627- return new GenericParameter (
628- declaringTypeInstance ,
629- declaringMethodInstance ,
630- $ "{ declarerFullName } +<{ genericParameter . Name } >",
631- genericParameter . Name ,
632- variance ,
633- typeConstraints ,
634- genericParameter . HasReferenceTypeConstraint ,
635- genericParameter . HasNotNullableValueTypeConstraint ,
636- genericParameter . HasDefaultConstructorConstraint ,
637- isCompilerGenerated
638- ) ;
639- }
640-
641618 internal GenericArgument CreateGenericArgumentFromTypeReference ( TypeReference typeReference )
642619 {
643620 return new GenericArgument ( GetOrCreateStubTypeInstanceFromTypeReference ( typeReference ) ) ;
0 commit comments