Per fare le cose fatte bene dovresti implementare il pattern factory method

vedi anche AbstractFactory

Se non hai voglia potresti utilizzare Microsoft Enterprise Library che sostanzialmente implementa il pattern sopracitato.