Inheritance: CObjectSerializer
        /// <summary>
        /// Gets the serializer-Instance according to given type
        /// </summary>
        /// <param name="type">Type of the objects, that have to be serialized</param>
        /// <returns>Serializer - Instance</returns>
        public AbstractSerializer GetSerializer(Type type)
        {
            object val;

            if (type == typeof(decimal?) || type == typeof(decimal))
            {
                int a = 10;
            }
            AbstractSerializer abstractSerializer = null;

            if (!m_htSerializerMap.TryGetValue(type, out val))
            {
                // TODO: Serialisieren von Nullbaren Typen und generischen
                // Listen
                if (typeof(IDictionary).IsAssignableFrom(type))
                {
                    abstractSerializer = new CMapSerializer();
                }
                else if (type.IsArray)
                {
                    abstractSerializer = new CArraySerializer();
                }
                else if (typeof(IList).IsAssignableFrom(type))
                {
                    abstractSerializer = new CCollectionSerializer();
                }
                else if (typeof(Stream).IsAssignableFrom(type))
                {
                    abstractSerializer = new CInputStreamSerializer();
                }
                else if (typeof(Exception).IsAssignableFrom(type))
                {
                    abstractSerializer = new CExceptionSerializer();
                }

                else if (type.IsEnum)
                {
                    abstractSerializer = new CEnumSerializer();
                }
                else
                {
                    if (m_htCachedSerializerMap.TryGetValue(type.FullName, out val))
                    {
                        abstractSerializer = (AbstractSerializer)val;
                    }
                    else
                    {
                        abstractSerializer = new CObjectSerializer(type);
                        m_htCachedSerializerMap.Add(type.FullName, abstractSerializer);
                    }
                }
            }
            else
            {
                abstractSerializer = (AbstractSerializer)val;
            }
            return(abstractSerializer);
        }
        public CExceptionDeserializer(Type type) : base(type)
        {
            List <Object> fieldList = CExceptionSerializer.GetSerializableFields();

            foreach (FieldInfo fieldInfo in fieldList)
            {
                m_deserFields[fieldInfo.Name] = fieldInfo;
            }
            m_type = type;
        }
        public CExceptionDeserializer(Type type) : base(type)
        {
            List <Object> propertyList = CExceptionSerializer.GetSerializablePropertys();

            foreach (PropertyInfo propertyInfo in propertyList)
            {
                m_deserPropertys[propertyInfo.Name] = propertyInfo;
            }
            m_type = type;
        }