using System;
namespace System.Reflection
{
/// Describes the constraints on a generic type parameter of a generic type or method.
// Token: 0x02000243 RID: 579
[Flags]
public enum GenericParameterAttributes
{
/// 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: 0x04000A4F RID: 2639
Covariant = 1,
/// The generic type parameter is contravariant. A contravariant type parameter can appear as a parameter type in method signatures.
// Token: 0x04000A50 RID: 2640
Contravariant = 2,
/// Selects the combination of all variance flags. This value is the result of using logical OR to combine the following flags: and .
// Token: 0x04000A51 RID: 2641
VarianceMask = 3,
/// There are no special flags.
// Token: 0x04000A52 RID: 2642
None = 0,
/// A type can be substituted for the generic type parameter only if it is a reference type.
// Token: 0x04000A53 RID: 2643
ReferenceTypeConstraint = 4,
/// A type can be substituted for the generic type parameter only if it is a value type and is not nullable.
// Token: 0x04000A54 RID: 2644
NotNullableValueTypeConstraint = 8,
/// A type can be substituted for the generic type parameter only if it has a parameterless constructor.
// Token: 0x04000A55 RID: 2645
DefaultConstructorConstraint = 16,
/// Selects the combination of all special constraint flags. This value is the result of using logical OR to combine the following flags: , , and .
// Token: 0x04000A56 RID: 2646
SpecialConstraintMask = 28
}
}