| File: System\Windows\Forms\FeatureSupport.cs | Web Access |
| Project: src\winforms\src\System.Windows.Forms\System.Windows.Forms.csproj (System.Windows.Forms) |
// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. namespace System.Windows.Forms; /// <summary> /// Provides <see langword="static"/> methods for retrieving feature information from the /// current system. /// </summary> public abstract class FeatureSupport : IFeatureSupport { /// <summary> /// Determines whether any version of the specified feature is installed in the system. /// This method is <see langword="static"/>. /// </summary> public static bool IsPresent(string featureClassName, string featureConstName) { return IsPresent(featureClassName, featureConstName, new Version(0, 0, 0, 0)); } /// <summary> /// Determines whether the specified or newer version of the specified feature is /// installed in the system. This method is <see langword="static"/>. /// </summary> public static bool IsPresent(string featureClassName, string featureConstName, Version minimumVersion) { Type? c = null; try { c = Type.GetType(featureClassName); } catch (ArgumentException) { } object? featureId = c?.GetField(featureConstName)?.GetValue(null); if (featureId is null || !typeof(IFeatureSupport).IsAssignableFrom(c)) { return false; } IFeatureSupport featureSupport = (IFeatureSupport)Activator.CreateInstance(c)!; return featureSupport.IsPresent(featureId, minimumVersion); } /// <summary> /// Gets the version of the specified feature that is available on the system. /// </summary> public static Version? GetVersionPresent(string featureClassName, string featureConstName) { Type? c = null; try { c = Type.GetType(featureClassName); } catch (ArgumentException) { } object? featureId = c?.GetField(featureConstName)?.GetValue(null); if (featureId is null || !typeof(IFeatureSupport).IsAssignableFrom(c)) { return null; } IFeatureSupport featureSupport = (IFeatureSupport)Activator.CreateInstance(c)!; return featureSupport.GetVersionPresent(featureId); } /// <summary> /// Determines whether any version of the specified feature is installed in the system. /// </summary> public virtual bool IsPresent(object feature) => IsPresent(feature, new Version(0, 0, 0, 0)); /// <summary> /// Determines whether the specified or newer version of the specified feature is /// installed in the system. /// </summary> public virtual bool IsPresent(object feature, Version minimumVersion) { Version? ver = GetVersionPresent(feature); if (ver is null) { return false; } return ver.CompareTo(minimumVersion) >= 0; } /// <summary> /// When overridden in a derived class, gets the version of the specified feature that /// is available on the system. /// </summary> public abstract Version? GetVersionPresent(object feature); }