public static XKey Deserialize( Stream source ) { if( source == null ) { throw new ArgumentNullException( "source" ); } Contract.Ensures( Contract.Result<XKey>() != null ); var builder = XKey.Empty.ToBuilder(); using( var reader = new KeyValuePairReader( source, true ) ) { while( true ) { var pair = reader.Read(); if( pair.Key == null ) { break; } builder.AddKey( pair.Key, pair.Value ); } } return builder.ToImmutable(); }
public static XKey Deserialize( string source ) { if( string.IsNullOrEmpty( source ) ) { throw new ArgumentNullException( "source" ); } Contract.Ensures( Contract.Result<XKey>() != null ); using( var stream = new MemoryStream( Convert.FromBase64String( source ), false ) ) { var builder = XKey.Empty.ToBuilder(); using( var reader = new KeyValuePairReader( stream ) ) { while( true ) { var pair = reader.Read(); if( pair.Key == null ) { break; } builder.AddKey( pair.Key, pair.Value ); } } return builder.ToImmutable(); } }