.NET provides several implementations to encode an url (see: Stackoverflow: URL Encoding using C#)
To make the existing source code future-proof, I decided to hide the implementation behind an interface.
The default implementation currently uses WebUtility.UrlEncode because it doesn't require an addtitonal reference to System.Web like HttpUtility.EncodeUrl().
public interface IUrlEncoder
{
string Encode(string value);
}
var encoder = new DefaultUrlEncoder();
var value = encoder.Encode("Hello World");
// value = "Hello+World"