14.6. Wrapping a String Hash for Ease of Use
Problem
You need to create a class to protect other developers on your team from having to deal with the details of how to add a hash to a string, as well as how to use the hash to verify if the string has been modified or corrupted.
Solution
The following classes decorate
the StringWriter
and
StringReader
classes to handle a hash added to its
contained string. The WriterDecorator
and
StringWriterHash
classes allow the
StringWriter
class to be decorated with extra
functionality to add a hash value to the
StringWriter
’s internal string.
Note that the method calls to create the hash value in the
CreateStringHash
method was defined in Recipe 14.5:
The code for the WriterDecorator
abstract base
class is:
using System; using System.Text; using System.IO; [Serializable] public abstract class WriterDecorator : TextWriter { public WriterDecorator( ) {} public WriterDecorator(StringWriter stringWriter) { internalStringWriter = stringWriter; } protected bool isHashed = false; protected StringWriter internalStringWriter = null; public void SetWriter(StringWriter stringWriter) { internalStringWriter = stringWriter; } }
This is the concrete implementation of the
WriterDecorator
class:
[Serializable] public class StringWriterHash : WriterDecorator { public StringWriterHash( ) : base( ) {} public StringWriterHash(StringWriter stringWriter) : base(stringWriter) { } public override Encoding Encoding { get {return (internalStringWriter.Encoding);} } public ...
Get C# Cookbook now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.