diff --git a/examples/Cli/Injection/Infrastructure/TypeResolver.cs b/examples/Cli/Injection/Infrastructure/TypeResolver.cs index 8ff91be..252e484 100644 --- a/examples/Cli/Injection/Infrastructure/TypeResolver.cs +++ b/examples/Cli/Injection/Infrastructure/TypeResolver.cs @@ -15,7 +15,12 @@ namespace Spectre.Console.Examples public object Resolve(Type type) { - return _provider.GetRequiredService(type); + if (type == null) + { + return null; + } + + return _provider.GetService(type); } public void Dispose() diff --git a/src/Spectre.Console/Cli/ITypeResolver.cs b/src/Spectre.Console/Cli/ITypeResolver.cs index 7f30d10..9d65a66 100644 --- a/src/Spectre.Console/Cli/ITypeResolver.cs +++ b/src/Spectre.Console/Cli/ITypeResolver.cs @@ -11,7 +11,7 @@ namespace Spectre.Console.Cli /// Resolves an instance of the specified type. /// /// The type to resolve. - /// An instance of the specified type. + /// An instance of the specified type, or null if no registration for the specified type exists. object? Resolve(Type? type); } } diff --git a/src/Spectre.Console/Cli/Internal/Binding/CommandPropertyBinder.cs b/src/Spectre.Console/Cli/Internal/Binding/CommandPropertyBinder.cs index 0277e78..ca96acf 100644 --- a/src/Spectre.Console/Cli/Internal/Binding/CommandPropertyBinder.cs +++ b/src/Spectre.Console/Cli/Internal/Binding/CommandPropertyBinder.cs @@ -28,16 +28,9 @@ namespace Spectre.Console.Cli private static CommandSettings CreateSettings(ITypeResolver resolver, Type settingsType) { - try + if (resolver.Resolve(settingsType) is CommandSettings settings) { - if (resolver.Resolve(settingsType) is CommandSettings settings) - { - return settings; - } - } - catch - { - // ignored + return settings; } if (Activator.CreateInstance(settingsType) is CommandSettings instance) diff --git a/src/Spectre.Console/Cli/Internal/TypeResolverAdapter.cs b/src/Spectre.Console/Cli/Internal/TypeResolverAdapter.cs index e614d26..6dd5d98 100644 --- a/src/Spectre.Console/Cli/Internal/TypeResolverAdapter.cs +++ b/src/Spectre.Console/Cli/Internal/TypeResolverAdapter.cs @@ -20,14 +20,9 @@ namespace Spectre.Console.Cli try { - if (_resolver != null) + var obj = _resolver?.Resolve(type); + if (obj != null) { - var obj = _resolver.Resolve(type); - if (obj == null) - { - throw CommandRuntimeException.CouldNotResolveType(type); - } - return obj; }