FeatureSupport.cs source code in C# .NET

Source code for the .NET framework in C#

                        

Code:

/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / WinForms / Managed / System / WinForms / FeatureSupport.cs / 1305376 / FeatureSupport.cs

                            //------------------------------------------------------------------------------ 
// 
//     Copyright (c) Microsoft Corporation.  All rights reserved.
// 
//----------------------------------------------------------------------------- 

namespace System.Windows.Forms { 
    using System.Configuration.Assemblies; 

    using System.Diagnostics; 

    using System;
    using System.Reflection;
    using System.Security; 
    using System.Security.Permissions;
 
 
    /// 
    ///  
    /// Provides  methods for retrieving feature information from the
    ///    current system.
    /// 
    public abstract class FeatureSupport : IFeatureSupport { 

        ///  
        ///  
        ///    Determines whether any version of the specified feature
        ///       is installed in the system. This method is . 
        /// 
        public static bool IsPresent(string featureClassName, string featureConstName) {
            return IsPresent(featureClassName, featureConstName, new Version(0, 0, 0, 0));
        } 

        ///  
        ///  
        ///    Determines whether the specified or newer version of the specified feature is
        ///       installed in the system. This method is . 
        /// 
        public static bool IsPresent(string featureClassName, string featureConstName, Version minimumVersion)
        {
            object featureId = null; 
            IFeatureSupport featureSupport = null;
 
            //APPCOMPAT: If Type.GetType() throws, we want to return 
            //null to preserve Everett behavior.
            Type c = null; 
            try {
                c = Type.GetType(featureClassName);
            }
            catch (ArgumentException) {} 

            if (c != null) { 
                FieldInfo fi = c.GetField(featureConstName); 

                if (fi != null) { 
                    featureId = fi.GetValue(null);
                }
            }
 
            if (featureId != null && typeof(IFeatureSupport).IsAssignableFrom(c)) {
 
                featureSupport = (IFeatureSupport) SecurityUtils.SecureCreateInstance(c); 

                if (featureSupport != null) { 
                    return featureSupport.IsPresent(featureId, minimumVersion);
                }
            }
            return false; 
        }
 
        ///  
        /// 
        ///    Gets the version of the specified feature that is available on the system. 
        /// 
        public static Version GetVersionPresent(string featureClassName, string featureConstName) {
            object featureId = null;
            IFeatureSupport featureSupport = null; 

            //APPCOMPAT: If Type.GetType() throws, we want to return 
            //null to preserve Everett behavior. 
            Type c = null;
            try { 
                c = Type.GetType(featureClassName);
            }
            catch (ArgumentException) {}
 
            if (c != null) {
                FieldInfo fi = c.GetField(featureConstName); 
 
                if (fi != null) {
                    featureId = fi.GetValue(null); 
                }
            }

            if (featureId != null) 
            {
                featureSupport = (IFeatureSupport) SecurityUtils.SecureCreateInstance(c); 
 
                if (featureSupport != null) {
                    return featureSupport.GetVersionPresent(featureId); 
                }
            }
            return null;
        } 

        ///  
        ///  
        ///    Determines whether any version of the specified feature
        ///       is installed in the system. 
        /// 
        public virtual bool IsPresent(object feature) {
            return IsPresent(feature, new Version(0, 0, 0, 0));
        } 

        ///  
        ///  
        ///    Determines whether the specified or newer version of the
        ///       specified feature is installed in the system. 
        /// 
        public virtual bool IsPresent(object feature, Version minimumVersion) {
            Version ver = GetVersionPresent(feature);
 
            if (ver != null) {
                return ver.CompareTo(minimumVersion) >= 0; 
            } 
            return false;
        } 

        /// 
        /// 
        ///    When overridden in a derived class, gets the version of the specified 
        ///       feature that is available on the system.
        ///  
        public abstract Version GetVersionPresent(object feature); 
    }
 

}

// File provided for Reference Use Only by Microsoft Corporation (c) 2007.


                        

Link Menu

Network programming in C#, Network Programming in VB.NET, Network Programming in .NET
This book is available now!
Buy at Amazon US or
Buy at Amazon UK