diff --git a/packages/reflection/lib/src/core/runtime_reflector.dart b/packages/reflection/lib/src/core/runtime_reflector.dart index 0aa9dc9..696056a 100644 --- a/packages/reflection/lib/src/core/runtime_reflector.dart +++ b/packages/reflection/lib/src/core/runtime_reflector.dart @@ -97,11 +97,12 @@ class RuntimeReflector { // For scanner-style factory, pass args as two positional parameters return Function.apply(factory, [positionalArgs, namedArgSymbols]); } else { - // For direct-style factory, wrap it to match scanner-style signature - final wrappedFactory = (List args, [Map? named]) { - return Function.apply(factory, args, named); - }; - return wrappedFactory(positionalArgs, namedArgSymbols); + // For direct-style factory, pass args directly + if (namedArgs.isEmpty) { + return Function.apply(factory, positionalArgs); + } else { + return Function.apply(factory, positionalArgs, namedArgSymbols); + } } } catch (e) { throw ReflectionException('Failed to create instance: $e'); diff --git a/packages/reflection/lib/src/core/scanner.dart b/packages/reflection/lib/src/core/scanner.dart index 96f168b..5a1b80d 100644 --- a/packages/reflection/lib/src/core/scanner.dart +++ b/packages/reflection/lib/src/core/scanner.dart @@ -104,15 +104,9 @@ class Scanner { final name = positionalArgs[0] as String; final age = positionalArgs[1] as int; return Function.apply(typeObj, [name, age], {}); - - default: - // For unknown types, create a generic factory that applies the arguments directly - return Function.apply( - constructor.name.isEmpty ? typeObj : typeObj[constructor.name], - positionalArgs, - namedArgs, - ); } + + throw UnsupportedError('Cannot create instance of $typeName'); }; } }