/// <summary>
        /// Looks for the <see>TypedStreamSerializableAttribute</see> in the given object
        /// </summary>
        /// <param name="victim"></param>
        /// <returns></returns>
        public static TypedStreamSerializableAttribute FindAttribute(ITypedStreamSerializable victim)
        {
            object[] attributes = victim.GetType().GetCustomAttributes(typeof(TypedStreamSerializableAttribute), false);

            if (attributes == null || attributes.Length == 0)
            {
                throw new ArgumentException("TypedStreamSerializableAttribute not defined", "victim");
            }

            return((TypedStreamSerializableAttribute)attributes[0]);
        }
Esempio n. 2
0
        public static void WriteTypedStreamSerializable(ITypedStreamSerializable victim, Stream sink)
        {
            if (victim == null)
            {
                WriteBool(false, sink);
            }
            else
            {
                WriteBool(true, sink);
                TypedStreamSerializableAttribute attribute = TypedStreamSerializableHelper.FindAttribute(victim);


                WriteString(attribute.Identifier, sink);
                victim.Write(sink);
            }
        }