@@ -352,7 +352,7 @@ private static void BuildSymbolicTypeMembers(
352352 if ( memberSymbol is IMethodSymbol constructorSymbol &&
353353 constructorSymbol . MethodKind == MethodKind . Constructor )
354354 {
355- BuildSymbolicConstructor ( typeBuilder , constructorSymbol ) ;
355+ BuildSymbolicConstructor ( typeBuilder , constructorSymbol , genericTypeParameters ) ;
356356 }
357357 else if ( memberSymbol is IMethodSymbol methodSymbol &&
358358 ( methodSymbol . MethodKind == MethodKind . Ordinary ||
@@ -391,14 +391,17 @@ private static void BuildSymbolicTypeMembers(
391391 }
392392
393393 private static ConstructorBuilder BuildSymbolicConstructor (
394- TypeBuilder typeBuilder , IMethodSymbol constructorSymbol )
394+ TypeBuilder typeBuilder ,
395+ IMethodSymbol constructorSymbol ,
396+ Type [ ] ? genericTypeParameters )
395397 {
396398 bool isDelegateConstructor = typeBuilder . BaseType == typeof ( MulticastDelegate ) ;
397399 ConstructorBuilder constructorBuilder = typeBuilder . DefineConstructor (
398400 MethodAttributes . Public | ( isDelegateConstructor ?
399401 MethodAttributes . RTSpecialName | MethodAttributes . HideBySig : default ) ,
400402 CallingConventions . HasThis ,
401- constructorSymbol . Parameters . Select ( ( p ) => p . Type . AsType ( ) ) . ToArray ( ) ) ;
403+ constructorSymbol . Parameters . Select (
404+ ( p ) => p . Type . AsType ( genericTypeParameters ) ) . ToArray ( ) ) ;
402405
403406 IReadOnlyList < IParameterSymbol > parameters = constructorSymbol . Parameters ;
404407 for ( int i = 0 ; i < parameters . Count ; i ++ )
0 commit comments