protected virtual void AddWriter(Type t, MediaType mediaType, Type writerType, MediaType fallbackMediaType) { Condition.Requires(mediaType, "mediaType").IsNotNull(); Condition.Requires(writerType, "writerType").IsNotNull(); CodecEntry entry = SelectExactMatchingWriters(t, mediaType).FirstOrDefault(); if (entry != null) { throw new ArgumentException(string.Format("Could not add writer of type {0} for media-type '{1}' since one already exists (got {2} for '{3}').", t, mediaType, entry.ClrType, entry.MediaType)); } RegisteredWriters.Add(new CodecEntry(mediaType, t, writerType, fallbackMediaType)); }
protected void AddReader(Type t, MediaType mediaType, Type readerType) { Condition.Requires(mediaType, "mediaType").IsNotNull(); Condition.Requires(readerType, "readerType").IsNotNull(); CodecEntry entry = SelectExactMatchingReaders(t, mediaType).FirstOrDefault(); if (entry != null) { throw new ArgumentException(string.Format("Could not add reader for media-type {0} since one already exists (got {1} for '{2}').", mediaType, entry.ClrType, entry.MediaType)); } RegisteredReaders.Add(new CodecEntry(mediaType, t, readerType)); }
public MediaTypeReaderRegistration GetReader(Type t, MediaType mediaType) { Condition.Requires(mediaType, "mediaType").IsNotNull(); CodecEntry entry = SelectReaders(t, mediaType).FirstOrDefault(); if (entry == null) { throw new ArgumentException(string.Format("Could not find a reader codec for '{0}' + {1}", mediaType, t)); } return(new MediaTypeReaderRegistration(entry.MediaType, entry.ClrType, t, InstantiateReaderCodec(entry.CodecType))); }
public MediaTypeWriterRegistration GetWriter(Type t, MediaType mediaType) { Condition.Requires(mediaType, "mediaType").IsNotNull(); CodecEntry entry = SelectWriters(t, mediaType).FirstOrDefault(); if (entry == null) { throw new ArgumentException(string.Format("Could not find a writer codec for '{0}' + {1}", mediaType, t)); } MediaType m = entry.MediaType.IsAnyWildcard && entry.FallbackMediaType != null ? entry.FallbackMediaType : entry.MediaType; return(new MediaTypeWriterRegistration(m, entry.ClrType, t, InstantiateWriterCodec(entry.CodecType))); }