Beispiel #1
0
        /// <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( );
        }
Beispiel #2
0
        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);
        }
Beispiel #3
0
 public static string ToSerializableForm(this MemberInfo member)
 {
     //return member.DeclaringType.AssemblyQualifiedName + Environment.NewLine + member;
     return(TypeEnumerator.GetShortTypeNameFor(member.DeclaringType) + Environment.NewLine + member);
 }