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;
}