From 637b66a9f526e7a278ea1a5845b9e880c572df7f Mon Sep 17 00:00:00 2001 From: Christoph Ruegg Date: Mon, 17 May 2021 21:03:25 +0200 Subject: [PATCH] Provider Probe to bypass activator if type not resolved --- src/Numerics/Providers/ProviderProbe.cs | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/src/Numerics/Providers/ProviderProbe.cs b/src/Numerics/Providers/ProviderProbe.cs index ad26ab16..16ab34b2 100644 --- a/src/Numerics/Providers/ProviderProbe.cs +++ b/src/Numerics/Providers/ProviderProbe.cs @@ -43,7 +43,7 @@ namespace MathNet.Numerics.Providers _creator = new Lazy>(() => { var type = Type.GetType(typeName); - return Activator.CreateInstance(type) as IProviderCreator; + return type is null ? null : Activator.CreateInstance(type) as IProviderCreator; }, LazyThreadSafetyMode.ExecutionAndPublication); } @@ -64,7 +64,13 @@ namespace MathNet.Numerics.Providers throw new NotSupportedException("Native Provider Probing is disabled by an application switch"); } - return _creator.Value.CreateProvider(); + var creator = _creator.Value; + if (creator is null) + { + throw new NotSupportedException("Native Provider Probing failed to resolve creator"); + } + + return creator.CreateProvider(); } public T TryCreate() @@ -76,7 +82,7 @@ namespace MathNet.Numerics.Providers try { - return _creator.Value.CreateProvider(); + return _creator.Value?.CreateProvider(); } catch {