Share via


AsnDecoder.ReadNamedBitListValue 方法

定義

多載

ReadNamedBitListValue(ReadOnlySpan<Byte>, AsnEncodingRules, Type, Int32, Nullable<Asn1Tag>)

在指定的編碼規則下,從 source 讀取具有所指定標籤的 NamedBitList,同時將其轉換為 flagsEnumType 所指定的 [FlagsAttribute] 列舉。

ReadNamedBitListValue<TFlagsEnum>(ReadOnlySpan<Byte>, AsnEncodingRules, Int32, Nullable<Asn1Tag>)

在指定的編碼規則下,從 source 讀取具有所指定標籤的 NamedBitList,同時將其轉換為 TFlagsEnum 所指定的 [FlagsAttribute] 列舉。

ReadNamedBitListValue(ReadOnlySpan<Byte>, AsnEncodingRules, Type, Int32, Nullable<Asn1Tag>)

來源:
AsnDecoder.NamedBitList.cs
來源:
AsnDecoder.NamedBitList.cs
來源:
AsnDecoder.NamedBitList.cs

在指定的編碼規則下,從 source 讀取具有所指定標籤的 NamedBitList,同時將其轉換為 flagsEnumType 所指定的 [FlagsAttribute] 列舉。

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

參數

source
ReadOnlySpan<Byte>

包含編碼資料的緩衝區。

ruleSet
AsnEncodingRules

要在解譯資料時使用的編碼條件約束。

flagsEnumType
Type

代表目的型別的 Type 物件。

bytesConsumed
Int32

當此方法傳回時,編碼值的位元組總數。 這個參數會被視為未初始化。

expectedTag
Nullable<Asn1Tag>

要在讀取之前檢查的標籤,或預設標籤的 null (Universal 3)。

傳回

轉換成 flagsEnumType 的 NamedBitList 值。

例外狀況

未定義ruleSet

下一個值沒有正確的標記。

-或-

長度編碼在目前的編碼規則下無效。

-或-

內容在目前的編碼規則下無效。

-或-

編碼的值太大,無法放入 flagsEnumType 值中。

flagsEnumType 不是列舉類型。

-或-

flagsEnumType 未使用 宣告 FlagsAttribute

-或-

expectedTagTagClassUniversal,但 expectedTagTagValue 對方法而言不正確。

flagsEnumTypenull

適用於

ReadNamedBitListValue<TFlagsEnum>(ReadOnlySpan<Byte>, AsnEncodingRules, Int32, Nullable<Asn1Tag>)

來源:
AsnDecoder.NamedBitList.cs
來源:
AsnDecoder.NamedBitList.cs
來源:
AsnDecoder.NamedBitList.cs

在指定的編碼規則下,從 source 讀取具有所指定標籤的 NamedBitList,同時將其轉換為 TFlagsEnum 所指定的 [FlagsAttribute] 列舉。

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

類型參數

TFlagsEnum

目的地列舉類型。

參數

source
ReadOnlySpan<Byte>

包含編碼資料的緩衝區。

ruleSet
AsnEncodingRules

要在解譯資料時使用的編碼條件約束。

bytesConsumed
Int32

當此方法傳回時,編碼值的位元組總數。 這個參數會被視為未初始化。

expectedTag
Nullable<Asn1Tag>

要在讀取之前檢查的標籤,或預設標籤的 null (Universal 3)。

傳回

TFlagsEnum

轉換成 TFlagsEnum 的 NamedBitList 值。

例外狀況

未定義ruleSet

下一個值沒有正確的標記。

-或-

長度編碼在目前的編碼規則下無效。

-或-

內容在目前的編碼規則下無效。

-或-

編碼的值太大,無法放入 TFlagsEnum 值中。

TFlagsEnum 不是列舉類型。

-或-

TFlagsEnum 未使用 宣告 FlagsAttribute

-或-

expectedTagTagClassUniversal,但 expectedTagTagValue 對方法而言不正確。

備註

這個方法執行的位對齊方式是將值之第一個字節中的最有效位解譯為 中 TFlagsEnum最小有效位,而位會增加值,直到第一個字節的最小有效位為止,繼續處理第二個字節的最大有效位,依此類故。 在這裡設定下,下列 ASN.1 類型宣告和 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),
}

雖然這裡的範例使用 RFC 3280 中的 KeyUsage NamedBitList (4.2.1.3) ,但範例列舉會使用不同於 X509KeyUsageFlags的值。

適用於