Browse Source

Provider Probe to bypass activator if type not resolved

dependabot/nuget/NUnit3TestAdapter-4.2.0
Christoph Ruegg 5 years ago
parent
commit
637b66a9f5
  1. 12
      src/Numerics/Providers/ProviderProbe.cs

12
src/Numerics/Providers/ProviderProbe.cs

@ -43,7 +43,7 @@ namespace MathNet.Numerics.Providers
_creator = new Lazy<IProviderCreator<T>>(() => _creator = new Lazy<IProviderCreator<T>>(() =>
{ {
var type = Type.GetType(typeName); var type = Type.GetType(typeName);
return Activator.CreateInstance(type) as IProviderCreator<T>; return type is null ? null : Activator.CreateInstance(type) as IProviderCreator<T>;
}, LazyThreadSafetyMode.ExecutionAndPublication); }, LazyThreadSafetyMode.ExecutionAndPublication);
} }
@ -64,7 +64,13 @@ namespace MathNet.Numerics.Providers
throw new NotSupportedException("Native Provider Probing is disabled by an application switch"); 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() public T TryCreate()
@ -76,7 +82,7 @@ namespace MathNet.Numerics.Providers
try try
{ {
return _creator.Value.CreateProvider(); return _creator.Value?.CreateProvider();
} }
catch catch
{ {

Loading…
Cancel
Save