SerializableType CompileNonContractTypes(Type type) { // built-in type Encode encoder; Decode decoder; if (Encoder.TryGetCodec(type, out encoder, out decoder)) { return(SerializableType.CreatePrimitiveType(type, encoder, decoder)); } if (type == typeof(object)) { return(SerializableType.CreateObjectType(type)); } if (typeof(IAmqpSerializable).IsAssignableFrom(type)) { return(SerializableType.CreateAmqpSerializableType(this, type)); } if (typeof(Described).IsAssignableFrom(type)) { return(SerializableType.CreateAmqpDescribedType(this, type)); } SerializableType nullable = this.CompileNullableTypes(type); if (nullable != null) { return(nullable); } SerializableType collection = this.CompileCollectionTypes(type); if (collection != null) { return(collection); } return(null); }