#region Copyright 2012-2014 by Roger Knapp, Licensed under the Apache License, Version 2.0 /* Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #endregion using System.Collections.Generic; namespace CSharpTest.Net.Serialization { /// /// Implements ISerializer of KeyValuePair<TKey, TValue> /// public sealed class KeyValueSerializer : ISerializer> { private readonly ISerializer _keySerializer; private readonly ISerializer _valueSerializer; /// /// Provide the key/value serializers to use. /// public KeyValueSerializer(ISerializer keySerializer, ISerializer valueSerializer) { _keySerializer = keySerializer; _valueSerializer = valueSerializer; } /// Writes the object to the stream public void WriteTo(KeyValuePair value, System.IO.Stream stream) { _keySerializer.WriteTo(value.Key, stream); _valueSerializer.WriteTo(value.Value, stream); } /// Reads the object from a stream public KeyValuePair ReadFrom(System.IO.Stream stream) { return new KeyValuePair( _keySerializer.ReadFrom(stream), _valueSerializer.ReadFrom(stream) ); } } }