Creating a interface for a template engine for multiple different types - C#