17 ArgumentNullException.ThrowIfNull(capabilities);
23 throw new ArgumentException(
24 "Adapter capabilities cannot contain Unknown.",
25 nameof(capabilities));
28 if (capabilities.Distinct().Count() != capabilities.Length)
30 throw new ArgumentException(
31 "Adapter capabilities cannot contain duplicates.",
32 nameof(capabilities));
35 _capabilities = capabilities.ToArray();
57 _capabilities.Contains(capability);
60 public abstract ValueTask<SolverAvailabilityInfo>
62 CancellationToken cancellationToken =
default);
70 ArgumentNullException.ThrowIfNull(exception);
77 StringComparison.OrdinalIgnoreCase) ||
80 StringComparison.OrdinalIgnoreCase))
85 if (exception is FileNotFoundException or
86 DirectoryNotFoundException)
100 ArgumentNullException.ThrowIfNull(exception);
103 System.Reflection.TargetInvocationException invocation &&
104 invocation.InnerException is Exception inner
ValueTask< SolverAvailabilityInfo > CheckAvailabilityAsync(CancellationToken cancellationToken=default)
Performs the adapter-specific machine discovery / load / license check.
string AdapterName
Gets the adapter display name.
static Exception Unwrap(Exception exception)
Unwraps reflection invocation exceptions.
static SolverAvailabilityStatus ClassifyFailure(Exception exception)
Maps an exception to a stable availability state.
bool SupportsCapability(SolverCapability capability)
Tests whether the adapter exposes a capability.
OptimizationSolverAdapterBase(params SolverCapability[] capabilities)
Initializes an adapter with its supported capabilities.
SolverKind SolverKind
Gets the concrete solver targeted by this adapter.
IReadOnlyCollection< SolverCapability > Capabilities
Gets the capabilities implemented by this adapter.
virtual string AdapterVersion
Gets the adapter implementation version.
string AdapterId
Gets the stable adapter identifier.
Defines the common metadata and availability contract implemented by every optimization-solver adapte...
SolverAvailabilityStatus
Describes whether a solver can currently be used on the current computer.
SolverCapability
Identifies an optional capability exposed by an optimization-solver adapter.