/// <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]); }
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); } }