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