﻿// Decompiled with JetBrains decompiler
// Type: System.Reflection.AssemblyFlagsAttribute
// Assembly: mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
// MVID: 255ABCDF-D9D6-4E3D-BAD4-F74D4CE3D7A8
// Assembly location: C:\Windows\Microsoft.NET\Framework\v4.0.30319\mscorlib.dll

using System;
using System.Runtime;
using System.Runtime.InteropServices;

namespace System.Reflection
{
  /// <summary>
  /// Specifies a bitwise combination of <see cref="T:System.Reflection.AssemblyNameFlags"/> flags for an assembly, describing just-in-time (JIT) compiler options, whether the assembly is retargetable, and whether it has a full or tokenized public key. This class cannot be inherited.
  /// </summary>
  [ComVisible(true)]
  [AttributeUsage(AttributeTargets.Assembly, Inherited = false)]
  [__DynamicallyInvokable]
  public sealed class AssemblyFlagsAttribute : Attribute
  {
    private AssemblyNameFlags m_flags;

    /// <summary>
    /// Gets an unsigned integer value representing the combination of <see cref="T:System.Reflection.AssemblyNameFlags"/> flags specified when this attribute instance was created.
    /// </summary>
    /// 
    /// <returns>
    /// An unsigned integer value representing a bitwise combination of <see cref="T:System.Reflection.AssemblyNameFlags"/> flags.
    /// </returns>
    [Obsolete("This property has been deprecated. Please use AssemblyFlags instead. http://go.microsoft.com/fwlink/?linkid=14202")]
    [CLSCompliant(false)]
    public uint Flags
    {
      [TargetedPatchingOptOut("Performance critical to inline this type of method across NGen image boundaries")] get
      {
        return (uint) this.m_flags;
      }
    }

    /// <summary>
    /// Gets an integer value representing the combination of <see cref="T:System.Reflection.AssemblyNameFlags"/> flags specified when this attribute instance was created.
    /// </summary>
    /// 
    /// <returns>
    /// An integer value representing a bitwise combination of <see cref="T:System.Reflection.AssemblyNameFlags"/> flags.
    /// </returns>
    [__DynamicallyInvokable]
    public int AssemblyFlags
    {
      [__DynamicallyInvokable, TargetedPatchingOptOut("Performance critical to inline this type of method across NGen image boundaries")] get
      {
        return (int) this.m_flags;
      }
    }

    /// <summary>
    /// Initializes a new instance of the <see cref="T:System.Reflection.AssemblyFlagsAttribute"/> class with the specified combination of <see cref="T:System.Reflection.AssemblyNameFlags"/> flags, cast as an unsigned integer value.
    /// </summary>
    /// <param name="flags">A bitwise combination of <see cref="T:System.Reflection.AssemblyNameFlags"/> flags, cast as an unsigned integer value, representing just-in-time (JIT) compiler options, longevity, whether an assembly is retargetable, and whether it has a full or tokenized public key.</param>
    [Obsolete("This constructor has been deprecated. Please use AssemblyFlagsAttribute(AssemblyNameFlags) instead. http://go.microsoft.com/fwlink/?linkid=14202")]
    [CLSCompliant(false)]
    [TargetedPatchingOptOut("Performance critical to inline this type of method across NGen image boundaries")]
    public AssemblyFlagsAttribute(uint flags)
    {
      this.m_flags = (AssemblyNameFlags) flags;
    }

    /// <summary>
    /// Initializes a new instance of the <see cref="T:System.Reflection.AssemblyFlagsAttribute"/> class with the specified combination of <see cref="T:System.Reflection.AssemblyNameFlags"/> flags, cast as an integer value.
    /// </summary>
    /// <param name="assemblyFlags">A bitwise combination of <see cref="T:System.Reflection.AssemblyNameFlags"/> flags, cast as an integer value, representing just-in-time (JIT) compiler options, longevity, whether an assembly is retargetable, and whether it has a full or tokenized public key.</param>
    [Obsolete("This constructor has been deprecated. Please use AssemblyFlagsAttribute(AssemblyNameFlags) instead. http://go.microsoft.com/fwlink/?linkid=14202")]
    [TargetedPatchingOptOut("Performance critical to inline this type of method across NGen image boundaries")]
    public AssemblyFlagsAttribute(int assemblyFlags)
    {
      this.m_flags = (AssemblyNameFlags) assemblyFlags;
    }

    /// <summary>
    /// Initializes a new instance of the <see cref="T:System.Reflection.AssemblyFlagsAttribute"/> class with the specified combination of <see cref="T:System.Reflection.AssemblyNameFlags"/> flags.
    /// </summary>
    /// <param name="assemblyFlags">A bitwise combination of <see cref="T:System.Reflection.AssemblyNameFlags"/> flags representing just-in-time (JIT) compiler options, longevity, whether an assembly is retargetable, and whether it has a full or tokenized public key.</param>
    [__DynamicallyInvokable]
    [TargetedPatchingOptOut("Performance critical to inline this type of method across NGen image boundaries")]
    public AssemblyFlagsAttribute(AssemblyNameFlags assemblyFlags)
    {
      this.m_flags = assemblyFlags;
    }
  }
}
