AsnDecoder.ReadNamedBitListValue Metoda
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Přetížení
ReadNamedBitListValue(ReadOnlySpan<Byte>, AsnEncodingRules, Type, Int32, Nullable<Asn1Tag>) |
Přečte název NamedBitList z se |
ReadNamedBitListValue<TFlagsEnum>(ReadOnlySpan<Byte>, AsnEncodingRules, Int32, Nullable<Asn1Tag>) |
Přečte název NamedBitList z se |
ReadNamedBitListValue(ReadOnlySpan<Byte>, AsnEncodingRules, Type, Int32, Nullable<Asn1Tag>)
Přečte název NamedBitList z se source
zadanou značkou v rámci zadaných pravidel kódování a převede ho na výčet [FlagsAttribute] určený parametrem flagsEnumType
.
public static Enum ReadNamedBitListValue (ReadOnlySpan<byte> source, System.Formats.Asn1.AsnEncodingRules ruleSet, Type flagsEnumType, out int bytesConsumed, System.Formats.Asn1.Asn1Tag? expectedTag = default);
static member ReadNamedBitListValue : ReadOnlySpan<byte> * System.Formats.Asn1.AsnEncodingRules * Type * int * Nullable<System.Formats.Asn1.Asn1Tag> -> Enum
Public Shared Function ReadNamedBitListValue (source As ReadOnlySpan(Of Byte), ruleSet As AsnEncodingRules, flagsEnumType As Type, ByRef bytesConsumed As Integer, Optional expectedTag As Nullable(Of Asn1Tag) = Nothing) As Enum
Parametry
- source
- ReadOnlySpan<Byte>
Vyrovnávací paměť obsahující kódovaná data.
- ruleSet
- AsnEncodingRules
Omezení kódování, která se mají použít při interpretaci dat.
- flagsEnumType
- Type
Type objekt představující cílový typ.
- bytesConsumed
- Int32
Když tato metoda vrátí celkový počet bajtů kódované hodnoty. Tento parametr je považován za neinicializovaný.
Značka, která se má zkontrolovat před čtením, nebo null
výchozí značka (Universal 3).
Návraty
Hodnota NamedBitList byla převedena na flagsEnumType
.
Výjimky
ruleSet
není definováno.
Další hodnota nemá správnou značku.
-nebo-
Kódování délky není platné podle aktuálních pravidel kódování.
-nebo-
Obsah není platný podle aktuálních pravidel kódování.
-nebo-
Zakódovaná hodnota je příliš velká a nevejde se do hodnoty flagsEnumType
.
flagsEnumType
není typ výčtu.
-nebo-
flagsEnumType
nebyl deklarován s FlagsAttribute
-nebo-
expectedTag
.TagClass je Universal, ale expectedTag
hodnota .TagValue není správná pro metodu .
flagsEnumType
je null
Platí pro
ReadNamedBitListValue<TFlagsEnum>(ReadOnlySpan<Byte>, AsnEncodingRules, Int32, Nullable<Asn1Tag>)
Přečte název NamedBitList z se source
zadanou značkou v rámci zadaných pravidel kódování a převede ho na výčet [FlagsAttribute] určený parametrem TFlagsEnum
.
public static TFlagsEnum ReadNamedBitListValue<TFlagsEnum> (ReadOnlySpan<byte> source, System.Formats.Asn1.AsnEncodingRules ruleSet, out int bytesConsumed, System.Formats.Asn1.Asn1Tag? expectedTag = default) where TFlagsEnum : Enum;
static member ReadNamedBitListValue : ReadOnlySpan<byte> * System.Formats.Asn1.AsnEncodingRules * int * Nullable<System.Formats.Asn1.Asn1Tag> -> 'FlagsEnum (requires 'FlagsEnum :> Enum)
Public Shared Function ReadNamedBitListValue(Of TFlagsEnum As Enum) (source As ReadOnlySpan(Of Byte), ruleSet As AsnEncodingRules, ByRef bytesConsumed As Integer, Optional expectedTag As Nullable(Of Asn1Tag) = Nothing) As TFlagsEnum
Parametry typu
- TFlagsEnum
Typ výčtu cíle
Parametry
- source
- ReadOnlySpan<Byte>
Vyrovnávací paměť obsahující kódovaná data.
- ruleSet
- AsnEncodingRules
Omezení kódování, která se mají použít při interpretaci dat.
- bytesConsumed
- Int32
Když tato metoda vrátí celkový počet bajtů kódované hodnoty. Tento parametr je považován za neinicializovaný.
Značka, která se má zkontrolovat před čtením, nebo null
výchozí značka (Universal 3).
Návraty
Hodnota NamedBitList byla převedena na TFlagsEnum
.
Výjimky
ruleSet
není definováno.
Další hodnota nemá správnou značku.
-nebo-
Kódování délky není platné podle aktuálních pravidel kódování.
-nebo-
Obsah není platný podle aktuálních pravidel kódování.
-nebo-
Zakódovaná hodnota je příliš velká a nevejde se do hodnoty TFlagsEnum
.
TFlagsEnum
není typ výčtu.
-nebo-
TFlagsEnum
nebyl deklarován s FlagsAttribute
-nebo-
expectedTag
.TagClass je Universal, ale expectedTag
hodnota .TagValue není správná pro metodu .
Poznámky
Bitové zarovnání prováděné touto metodou je interpretovat nejvýznamnější bit v prvním bajtu hodnoty jako nejméně významný bit v TFlagsEnum
, přičemž bity se zvyšují v hodnotě až do nejmenšího významného bitu prvního bajtu, pokračování s nejvýznamnějším bitem druhého bajtu atd. V tomto schématu lze společně použít následující deklaraci typu ASN.1 a výčet jazyka C#:
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),
}
Zatímco zde uvedený příklad používá KeyUsage NamedBitList z RFC 3280 (4.2.1.3), příklad výčtu používá hodnoty, které se liší od X509KeyUsageFlags.