using System;
using Cpp2IlInjected;
namespace System.Reflection
{
/// Describes the constraints on a generic type parameter of a generic type or method.
// Token: 0x02000222 RID: 546
[Token(Token = "0x2000222")]
[Flags]
public enum GenericParameterAttributes
{
/// There are no special flags.
// Token: 0x04000A66 RID: 2662
[Token(Token = "0x4000A66")]
None = 0,
/// Selects the combination of all variance flags. This value is the result of using logical OR to combine the following flags: and .
// Token: 0x04000A67 RID: 2663
[Token(Token = "0x4000A67")]
VarianceMask = 3,
/// The generic type parameter is covariant. A covariant type parameter can appear as the result type of a method, the type of a read-only field, a declared base type, or an implemented interface.
// Token: 0x04000A68 RID: 2664
[Token(Token = "0x4000A68")]
Covariant = 1,
/// The generic type parameter is contravariant. A contravariant type parameter can appear as a parameter type in method signatures.
// Token: 0x04000A69 RID: 2665
[Token(Token = "0x4000A69")]
Contravariant = 2,
/// Selects the combination of all special constraint flags. This value is the result of using logical OR to combine the following flags: , , and .
// Token: 0x04000A6A RID: 2666
[Token(Token = "0x4000A6A")]
SpecialConstraintMask = 28,
/// A type can be substituted for the generic type parameter only if it is a reference type.
// Token: 0x04000A6B RID: 2667
[Token(Token = "0x4000A6B")]
ReferenceTypeConstraint = 4,
/// A type can be substituted for the generic type parameter only if it is a value type and is not nullable.
// Token: 0x04000A6C RID: 2668
[Token(Token = "0x4000A6C")]
NotNullableValueTypeConstraint = 8,
/// A type can be substituted for the generic type parameter only if it has a parameterless constructor.
// Token: 0x04000A6D RID: 2669
[Token(Token = "0x4000A6D")]
DefaultConstructorConstraint = 16
}
}