MethodImplAttribute.cs source code in C# .NET

Source code for the .NET framework in C#

                        

Code:

/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / whidbey / NetFxQFE / ndp / clr / src / BCL / System / Runtime / CompilerServices / MethodImplAttribute.cs / 1 / MethodImplAttribute.cs

                            // ==++== 
//
//   Copyright (c) Microsoft Corporation.  All rights reserved.
//
// ==--== 
namespace System.Runtime.CompilerServices {
 
    using System; 
    using System.Reflection;
 
    // This Enum matchs the miImpl flags defined in corhdr.h. It is used to specify
    // certain method properties.

    [Serializable] 
    [Flags]
[System.Runtime.InteropServices.ComVisible(true)] 
    public enum MethodImplOptions 
    {
        Unmanaged       =   System.Reflection.MethodImplAttributes.Unmanaged, 
        ForwardRef      =   System.Reflection.MethodImplAttributes.ForwardRef,
        PreserveSig     =   System.Reflection.MethodImplAttributes.PreserveSig,
        InternalCall    =   System.Reflection.MethodImplAttributes.InternalCall,
        Synchronized    =   System.Reflection.MethodImplAttributes.Synchronized, 
        NoInlining      =   System.Reflection.MethodImplAttributes.NoInlining,
        NoOptimization  =   System.Reflection.MethodImplAttributes.NoOptimization, 
        // **** If you add something, update internal MethodImplAttribute(MethodImplAttributes methodImplAttributes)! **** 
 	}
 
    [Serializable]
[System.Runtime.InteropServices.ComVisible(true)]
    public enum MethodCodeType
    { 
        IL              =   System.Reflection.MethodImplAttributes.IL,
        Native          =   System.Reflection.MethodImplAttributes.Native, 
        ///  
        OPTIL           =   System.Reflection.MethodImplAttributes.OPTIL,
        Runtime         =   System.Reflection.MethodImplAttributes.Runtime 
    }

    // Custom attribute to specify additional method properties.
    [Serializable, AttributeUsage(AttributeTargets.Method | AttributeTargets.Constructor, Inherited = false)] 
[System.Runtime.InteropServices.ComVisible(true)]
    sealed public class MethodImplAttribute : Attribute 
    { 
        internal MethodImplOptions  _val;
        public   MethodCodeType     MethodCodeType; 

        internal MethodImplAttribute(MethodImplAttributes methodImplAttributes)
        {
            MethodImplOptions all = 
                MethodImplOptions.Unmanaged | MethodImplOptions.ForwardRef | MethodImplOptions.PreserveSig |
                MethodImplOptions.InternalCall | MethodImplOptions.Synchronized | MethodImplOptions.NoInlining | 
                MethodImplOptions.NoOptimization; 
            _val = ((MethodImplOptions)methodImplAttributes) & all;
        } 

        public MethodImplAttribute(MethodImplOptions methodImplOptions)
        {
            _val = methodImplOptions; 
        }
 
        public MethodImplAttribute(short value) 
        {
            _val = (MethodImplOptions)value; 
        }

        public MethodImplAttribute()
        { 
        }
 
        public MethodImplOptions Value { get {return _val;} } 
    }
 
}

// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
// ==++== 
//
//   Copyright (c) Microsoft Corporation.  All rights reserved.
//
// ==--== 
namespace System.Runtime.CompilerServices {
 
    using System; 
    using System.Reflection;
 
    // This Enum matchs the miImpl flags defined in corhdr.h. It is used to specify
    // certain method properties.

    [Serializable] 
    [Flags]
[System.Runtime.InteropServices.ComVisible(true)] 
    public enum MethodImplOptions 
    {
        Unmanaged       =   System.Reflection.MethodImplAttributes.Unmanaged, 
        ForwardRef      =   System.Reflection.MethodImplAttributes.ForwardRef,
        PreserveSig     =   System.Reflection.MethodImplAttributes.PreserveSig,
        InternalCall    =   System.Reflection.MethodImplAttributes.InternalCall,
        Synchronized    =   System.Reflection.MethodImplAttributes.Synchronized, 
        NoInlining      =   System.Reflection.MethodImplAttributes.NoInlining,
        NoOptimization  =   System.Reflection.MethodImplAttributes.NoOptimization, 
        // **** If you add something, update internal MethodImplAttribute(MethodImplAttributes methodImplAttributes)! **** 
 	}
 
    [Serializable]
[System.Runtime.InteropServices.ComVisible(true)]
    public enum MethodCodeType
    { 
        IL              =   System.Reflection.MethodImplAttributes.IL,
        Native          =   System.Reflection.MethodImplAttributes.Native, 
        ///  
        OPTIL           =   System.Reflection.MethodImplAttributes.OPTIL,
        Runtime         =   System.Reflection.MethodImplAttributes.Runtime 
    }

    // Custom attribute to specify additional method properties.
    [Serializable, AttributeUsage(AttributeTargets.Method | AttributeTargets.Constructor, Inherited = false)] 
[System.Runtime.InteropServices.ComVisible(true)]
    sealed public class MethodImplAttribute : Attribute 
    { 
        internal MethodImplOptions  _val;
        public   MethodCodeType     MethodCodeType; 

        internal MethodImplAttribute(MethodImplAttributes methodImplAttributes)
        {
            MethodImplOptions all = 
                MethodImplOptions.Unmanaged | MethodImplOptions.ForwardRef | MethodImplOptions.PreserveSig |
                MethodImplOptions.InternalCall | MethodImplOptions.Synchronized | MethodImplOptions.NoInlining | 
                MethodImplOptions.NoOptimization; 
            _val = ((MethodImplOptions)methodImplAttributes) & all;
        } 

        public MethodImplAttribute(MethodImplOptions methodImplOptions)
        {
            _val = methodImplOptions; 
        }
 
        public MethodImplAttribute(short value) 
        {
            _val = (MethodImplOptions)value; 
        }

        public MethodImplAttribute()
        { 
        }
 
        public MethodImplOptions Value { get {return _val;} } 
    }
 
}

// 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