/// <summary> /// Serializes the specified writer. /// </summary> /// <param name="serializer"> The serializer. </param> /// <param name="writer"> The writer. </param> /// <param name="value"> The value. </param> /// <param name="element"> The element. </param> public static void Serialize(this XmlSerializer serializer, XmlWriter writer, object value, string element) { if (value == null) { return; } try { if (value.GetType( ) .IsPrimitive || value is Guid || value is string) { writer.WriteStartElement(element); writer.WriteStartAttribute("Type"); writer.WriteValue(value.GetType( ) .IsPrimitive ? TypeEnumerator.GetShortTypeNameFor(value.GetType( )) : value.GetType( ) .AssemblyQualifiedName); writer.WriteEndAttribute( ); writer.WriteStartAttribute("Value"); writer.WriteValue(Convert.ToString(value)); writer.WriteEndAttribute( ); } else { var xmlSerializer = new XmlSerializer(value.GetType( )); writer.WriteStartElement(element); writer.WriteStartAttribute("Type"); writer.WriteValue(value.GetType( ) .IsPrimitive ? TypeEnumerator.GetShortTypeNameFor(value.GetType( )) : value.GetType( ) .AssemblyQualifiedName); writer.WriteEndAttribute( ); xmlSerializer.Serialize(writer, value); } } catch { // object cannot be serialized if (Log.IsWarnEnabled) { Log.WarnFormat("Object Type : {0} cannot be XmlSerialized", value.GetType( )); } } writer.WriteEndElement( ); }
public static string ToSerializableForm(this MethodInfo method) { string serializableName = TypeEnumerator.GetShortTypeNameFor(method.DeclaringType) + Environment.NewLine; if (!method.IsGenericMethod) { serializableName += method.ToString( ); } else { serializableName += method.GetGenericMethodDefinition( ) + Environment.NewLine + String.Join(Environment.NewLine, method.GetGenericArguments( ).Select(ty => ty.ToSerializableForm( )).ToArray( )); } return(serializableName); }
public static string ToSerializableForm(this MemberInfo member) { //return member.DeclaringType.AssemblyQualifiedName + Environment.NewLine + member; return(TypeEnumerator.GetShortTypeNameFor(member.DeclaringType) + Environment.NewLine + member); }