public static void Main()
ITypeStringFormattingService<Foo> formatter = new FooStringFormattingService();
string s = formatter.FormatValue(foo);
var unknownObject = ExternalObject.GetRandomObject();
string friendlyString = formatter.FormatValue(unknownObject);
Console.WriteLine(friendlyString);
public interface ITypeStringFormattingService<in T>
string FormatValue(T value);
public class FooStringFormattingService : ITypeStringFormattingService<Foo>
public string FormatValue(Foo value)
public static class ExternalObject
public static object GetRandomObject()