示例#1
0
        public static bool WritePrimitive(IWritingCoder coder, Type type, ref object obj)
        {
            Action <IWritingCoder, object> writer;

            if (TypeWriterMap.TryGetValue(type, out writer))
            {
                writer(coder, obj);
                return(true);
            }
            else if (type.IsEnum)
            {
                coder.CodeEnum(type, ref obj);
                return(true);
            }
            else if (type.IsArray)
            {
                Array a = (Array)obj;
                coder.Code(type, ref a);
                return(true);
            }
            else if (type.IsGenericType)
            {
                Action <IWritingCoder, Type, object> genericWriter;
                if (s_genericWriterMap.TryGetValue(
                        type.GetGenericTypeDefinition(),
                        out genericWriter))
                {
                    genericWriter(coder, type, obj);
                    return(true);
                }
            }
            return(false);
        }
示例#2
0
 public static bool IsDirectlyCodeable(Type type)
 {
     if (TypeWriterMap.ContainsKey(type))
     {
         return(true);
     }
     if (type.IsEnum)
     {
         return(true);
     }
     if (type.IsArray)
     {
         return(true);
     }
     if (type.IsGenericType)
     {
         Type genericType = type.GetGenericTypeDefinition();
         if (s_genericWriterMap.ContainsKey(genericType))
         {
             return(true);
         }
     }
     return(false);
 }