AsnReader.ReadNamedBitListValue Method      
Definition
Important
Some information relates to prerelease product that may be substantially modified before it’s released. Microsoft makes no warranties, express or implied, with respect to the information provided here.
Overloads
| ReadNamedBitListValue(Type, Nullable<Asn1Tag>) | 
						 Reads the next value as a NamedBitList with a specified tag, converting it to the
[FlagsAttribute] enum specified by   | 
        	
| ReadNamedBitListValue<TFlagsEnum>(Nullable<Asn1Tag>) | 
						 Reads the next value as a NamedBitList with a specified tag, converting it to the
[FlagsAttribute] enum specified by   | 
        	
ReadNamedBitListValue(Type, Nullable<Asn1Tag>)
- Source:
 - AsnDecoder.NamedBitList.cs
 
- Source:
 - AsnDecoder.NamedBitList.cs
 
- Source:
 - AsnDecoder.NamedBitList.cs
 
- Source:
 - AsnDecoder.NamedBitList.cs
 
- Source:
 - AsnDecoder.NamedBitList.cs
 
- Source:
 - AsnDecoder.NamedBitList.cs
 
Reads the next value as a NamedBitList with a specified tag, converting it to the
[FlagsAttribute] enum specified by flagsEnumType.
public Enum ReadNamedBitListValue(Type flagsEnumType, System.Formats.Asn1.Asn1Tag? expectedTag = default);
	member this.ReadNamedBitListValue : Type * Nullable<System.Formats.Asn1.Asn1Tag> -> Enum
	Public Function ReadNamedBitListValue (flagsEnumType As Type, Optional expectedTag As Nullable(Of Asn1Tag) = Nothing) As Enum
	Parameters
- flagsEnumType
 - Type
 
Type object representing the destination type.
Returns
The NamedBitList value converted to a flagsEnumType.
Exceptions
The next value does not have the correct tag.
-or-
The length encoding is not valid under the current encoding rules.
-or-
The contents are not valid under the current encoding rules.
-or-
The encoded value is too big to fit in a flagsEnumType value.
flagsEnumType is not an enum type.
 -or-
 <code data-dev-comment-type="paramref">flagsEnumType</code> was not declared with <xref data-throw-if-not-resolved="true" uid="System.FlagsAttribute"></xref>
 -or-
 <code data-dev-comment-type="paramref">expectedTag</code>.<xref data-throw-if-not-resolved="true" uid="System.Formats.Asn1.Asn1Tag.TagClass"></xref> is
 <xref data-throw-if-not-resolved="true" uid="System.Formats.Asn1.TagClass.Universal"></xref>, but
 <code data-dev-comment-type="paramref">expectedTag</code>.<xref data-throw-if-not-resolved="true" uid="System.Formats.Asn1.Asn1Tag.TagValue"></xref> is not correct for
 the method.
		flagsEnumType is null
See also
Applies to
ReadNamedBitListValue<TFlagsEnum>(Nullable<Asn1Tag>)
- Source:
 - AsnDecoder.NamedBitList.cs
 
- Source:
 - AsnDecoder.NamedBitList.cs
 
- Source:
 - AsnDecoder.NamedBitList.cs
 
- Source:
 - AsnDecoder.NamedBitList.cs
 
- Source:
 - AsnDecoder.NamedBitList.cs
 
- Source:
 - AsnDecoder.NamedBitList.cs
 
Reads the next value as a NamedBitList with a specified tag, converting it to the
[FlagsAttribute] enum specified by TFlagsEnum.
public TFlagsEnum ReadNamedBitListValue<TFlagsEnum>(System.Formats.Asn1.Asn1Tag? expectedTag = default) where TFlagsEnum : Enum;
	member this.ReadNamedBitListValue : Nullable<System.Formats.Asn1.Asn1Tag> -> 'FlagsEnum (requires 'FlagsEnum :> Enum)
	Public Function ReadNamedBitListValue(Of TFlagsEnum As Enum) (Optional expectedTag As Nullable(Of Asn1Tag) = Nothing) As TFlagsEnum
    Type Parameters
- TFlagsEnum
 
The destination enum type.
Parameters
Returns
The NamedBitList value converted to a TFlagsEnum.
Exceptions
The next value does not have the correct tag.
-or-
The length encoding is not valid under the current encoding rules.
-or-
The contents are not valid under the current encoding rules.
-or-
The encoded value is too big to fit in a TFlagsEnum value.
TFlagsEnum is not an enum type.
 -or-
 <code data-dev-comment-type="typeparamref">TFlagsEnum</code> was not declared with <xref data-throw-if-not-resolved="true" uid="System.FlagsAttribute"></xref>
 -or-
 <code data-dev-comment-type="paramref">expectedTag</code>.<xref data-throw-if-not-resolved="true" uid="System.Formats.Asn1.Asn1Tag.TagClass"></xref> is
 <xref data-throw-if-not-resolved="true" uid="System.Formats.Asn1.TagClass.Universal"></xref>, but
 <code data-dev-comment-type="paramref">expectedTag</code>.<xref data-throw-if-not-resolved="true" uid="System.Formats.Asn1.Asn1Tag.TagValue"></xref> is not correct for
 the method.
		Remarks
The bit alignment performed by this method is to interpret the most significant bit in the first byte of the value as the least significant bit in TFlagsEnum, with bits increasing in value until the least significant bit of the first byte, proceeding with the most significant bit of the second byte, and so on. Under this scheme, the following ASN.1 type declaration and C# enumeration can be used together:
KeyUsage ::= BIT STRING {
  digitalSignature   (0),
  nonRepudiation     (1),
  keyEncipherment    (2),
  dataEncipherment   (3),
  keyAgreement       (4),
  keyCertSign        (5),
  cRLSign            (6),
  encipherOnly       (7),
  decipherOnly       (8) }
[Flags]
enum KeyUsage
{
    None              = 0,
    DigitalSignature  = 1 << (0),
    NonRepudiation    = 1 << (1),
    KeyEncipherment   = 1 << (2),
    DataEncipherment  = 1 << (3),
    KeyAgreement      = 1 << (4),
    KeyCertSign       = 1 << (5),
    CrlSign           = 1 << (6),
    EncipherOnly      = 1 << (7),
    DecipherOnly      = 1 << (8),
}
While the example here uses the KeyUsage NamedBitList from RFC 3280 (4.2.1.3), the example enum uses values that are different from System.Security.Cryptography.X509Certificates.X509KeyUsageFlags.