AsnReader.ReadNamedBitListValue Метод
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Перегрузки
ReadNamedBitListValue(Type, Nullable<Asn1Tag>) |
Считывает следующее значение в виде NamedBitList с указанным тегом и преобразует его в перечислимое [FlagsAttribute], заданное с помощью |
ReadNamedBitListValue<TFlagsEnum>(Nullable<Asn1Tag>) |
Считывает следующее значение в виде NamedBitList с указанным тегом и преобразует его в перечислимое [FlagsAttribute], заданное с помощью |
ReadNamedBitListValue(Type, Nullable<Asn1Tag>)
- Исходный код:
- AsnDecoder.NamedBitList.cs
- Исходный код:
- AsnDecoder.NamedBitList.cs
- Исходный код:
- AsnDecoder.NamedBitList.cs
Считывает следующее значение в виде NamedBitList с указанным тегом и преобразует его в перечислимое [FlagsAttribute], заданное с помощью 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
Параметры
- flagsEnumType
- Type
Объект Type представляющий тип назначения.
Возвращаемое значение
Значение NamedBitList, преобразованное в flagsEnumType
.
Исключения
Следующее значение не имеет правильного тега.
-или-
Кодировка длины недопустима в соответствии с текущими правилами кодирования.
-или-
Содержимое недопустимо в соответствии с текущими правилами кодирования.
-или-
Закодированное значение слишком велико, чтобы поместиться в flagsEnumType
значение.
flagsEnumType
не является типом перечисления.
-или-
flagsEnumType
не был объявлен с FlagsAttribute
-или-
expectedTag
.TagClass имеет значение Universal, но expectedTag
.TagValue не является правильным для метода .
flagsEnumType
имеет значение null
.
Применяется к
ReadNamedBitListValue<TFlagsEnum>(Nullable<Asn1Tag>)
- Исходный код:
- AsnDecoder.NamedBitList.cs
- Исходный код:
- AsnDecoder.NamedBitList.cs
- Исходный код:
- AsnDecoder.NamedBitList.cs
Считывает следующее значение в виде NamedBitList с указанным тегом и преобразует его в перечислимое [FlagsAttribute], заданное с помощью 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
Параметры типа
- TFlagsEnum
Тип перечисления назначения.
Параметры
Возвращаемое значение
Значение NamedBitList, преобразованное в TFlagsEnum
.
Исключения
Следующее значение не имеет правильного тега.
-или-
Кодировка длины недопустима в соответствии с текущими правилами кодирования.
-или-
Содержимое недопустимо в соответствии с текущими правилами кодирования.
-или-
Закодированное значение слишком велико, чтобы поместиться в TFlagsEnum
значение.
TFlagsEnum
не является типом перечисления.
-или-
TFlagsEnum
не был объявлен с FlagsAttribute
-или-
expectedTag
.TagClass имеет значение Universal, но expectedTag
.TagValue не является правильным для метода .
Комментарии
Выравнивание битов, выполняемое этим методом, заключается в том, чтобы интерпретировать наиболее значительный бит в первом байте значения как наименьший значимый бит в 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),
}
Хотя в приведенном здесь примере используется KeyUsage NamedBitList из RFC 3280 (4.2.1.3), в перечислении примера используются значения, отличные от X509KeyUsageFlags.