Ejemplo n.º 1
0
        /// <summary>
        ///   Write a non-[<see cref="FlagsAttribute"/>] enum value as an Enumerated with
        ///   tag UNIVERSAL 10.
        /// </summary>
        /// <param name="tag">The tag to write.</param>
        /// <param name="enumValue">The boxed enumeration value to write.</param>
        /// <exception cref="ArgumentNullException">
        ///   <paramref name="enumValue"/> is <c>null</c>
        /// </exception>
        /// <exception cref="ArgumentException">
        ///   <paramref name="tag"/>.<see cref="Asn1Tag.TagClass"/> is
        ///   <see cref="TagClass.Universal"/>, but
        ///   <paramref name="tag"/>.<see cref="Asn1Tag.TagValue"/> is not correct for
        ///   the method --OR--
        ///   <paramref name="enumValue"/> is not a boxed enum value --OR--
        ///   the unboxed type of <paramref name="enumValue"/> is declared [<see cref="FlagsAttribute"/>]
        /// </exception>
        /// <exception cref="ObjectDisposedException">The writer has been Disposed.</exception>
        /// <seealso cref="WriteEnumeratedValue(System.Security.Cryptography.Asn1.Asn1Tag,object)"/>
        /// <seealso cref="WriteEnumeratedValue{T}(T)"/>
        public void WriteEnumeratedValue(Asn1Tag tag, object enumValue)
        {
            if (enumValue == null)
            {
                throw new ArgumentNullException(nameof(enumValue));
            }

            WriteEnumeratedValue(tag.AsPrimitive(), enumValue.GetType(), enumValue);
        }
Ejemplo n.º 2
0
        /// <summary>
        ///   Write a non-[<see cref="FlagsAttribute"/>] enum value as an Enumerated with
        ///   tag UNIVERSAL 10.
        /// </summary>
        /// <param name="value">The boxed enumeration value to write.</param>
        /// <param name="tag">The tag to write, or <see langword="null"/> for the default tag (Universal 10).</param>
        /// <exception cref="ArgumentNullException">
        ///   <paramref name="value"/> is <see langword="null"/>.
        /// </exception>
        /// <exception cref="ArgumentException">
        ///   <paramref name="tag"/>.<see cref="Asn1Tag.TagClass"/> is
        ///   <see cref="TagClass.Universal"/>, but
        ///   <paramref name="tag"/>.<see cref="Asn1Tag.TagValue"/> is not correct for
        ///   the method.
        ///
        ///   -or-
        ///
        ///   <paramref name="value"/> is not a boxed enum value.
        ///
        ///   -or-
        ///
        ///   the unboxed type of <paramref name="value"/> is declared [<see cref="FlagsAttribute"/>].
        /// </exception>
        /// <seealso cref="WriteEnumeratedValue(Enum,Asn1Tag?)"/>
        /// <seealso cref="WriteEnumeratedValue{T}(T,Asn1Tag?)"/>
        public void WriteEnumeratedValue(Enum value, Asn1Tag?tag = null)
        {
            if (value == null)
            {
                throw new ArgumentNullException(nameof(value));
            }

            WriteEnumeratedValue(tag?.AsPrimitive() ?? Asn1Tag.Enumerated, value.GetType(), value);
        }
Ejemplo n.º 3
0
 /// <summary>
 ///   Write a non-[<see cref="FlagsAttribute"/>] enum value as an Enumerated with
 ///   tag UNIVERSAL 10.
 /// </summary>
 /// <param name="tag">The tag to write.</param>
 /// <param name="enumValue">The boxed enumeration value to write.</param>
 /// <exception cref="ArgumentNullException">
 ///   <paramref name="enumValue"/> is <c>null</c>
 /// </exception>
 /// <exception cref="ArgumentException">
 ///   <paramref name="tag"/>.<see cref="Asn1Tag.TagClass"/> is
 ///   <see cref="TagClass.Universal"/>, but
 ///   <paramref name="tag"/>.<see cref="Asn1Tag.TagValue"/> is not correct for
 ///   the method --OR--
 ///   <typeparamref name="TEnum"/> is not an enum --OR--
 ///   <typeparamref name="TEnum"/> is declared [<see cref="FlagsAttribute"/>]
 /// </exception>
 /// <exception cref="ObjectDisposedException">The writer has been Disposed.</exception>
 /// <seealso cref="WriteEnumeratedValue(Asn1Tag,object)"/>
 /// <seealso cref="WriteEnumeratedValue{T}(T)"/>
 public void WriteEnumeratedValue <TEnum>(Asn1Tag tag, TEnum enumValue) where TEnum : struct
 {
     WriteEnumeratedValue(tag.AsPrimitive(), typeof(TEnum), enumValue);
 }
Ejemplo n.º 4
0
 /// <summary>
 ///   Write a non-[<see cref="FlagsAttribute"/>] enum value as an Enumerated with
 ///   tag UNIVERSAL 10.
 /// </summary>
 /// <param name="tag">The tag to write.</param>
 /// <param name="value">The boxed enumeration value to write.</param>
 /// <exception cref="ArgumentNullException">
 ///   <paramref name="value"/> is <see langword="null"/>.
 /// </exception>
 /// <exception cref="ArgumentException">
 ///   <paramref name="tag"/>.<see cref="Asn1Tag.TagClass"/> is
 ///   <see cref="TagClass.Universal"/>, but
 ///   <paramref name="tag"/>.<see cref="Asn1Tag.TagValue"/> is not correct for
 ///   the method.
 ///
 ///   -or-
 ///
 ///   <typeparamref name="TEnum"/> is not an enum.
 ///
 ///   -or-
 ///
 ///   <typeparamref name="TEnum"/> is declared [<see cref="FlagsAttribute"/>].
 /// </exception>
 /// <seealso cref="WriteEnumeratedValue(Enum,Nullable{Asn1Tag})"/>
 public void WriteEnumeratedValue <TEnum>(TEnum value, Asn1Tag?tag = null) where TEnum : Enum
 {
     WriteEnumeratedValue(tag?.AsPrimitive() ?? Asn1Tag.Enumerated, typeof(TEnum), value);
 }