示例#1
0
        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));
        }
示例#2
0
        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));
        }
示例#3
0
        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)));
        }
示例#4
0
        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)));
        }