Почему бы вам не хранить где-нибудь строку для каждого из необходимых вам типов элементов управления, а затем ссылаться на нее по ключу?Это будет только одноразовое усилие.
string ctrlMarkup = GetMarkupFor("Textbox")
Возможно, вы захотите изменить Id и другие свойства, и вы сможете сделать это после создания экземпляра и, возможно, приведения его к определенному типу.
Или переместите parseControl в ваш геттер и верните готовый элемент управления.
string id= "Button1";
string text = "Save";
Control tbx= GetControl("TextBox", id, text);
public Control GetControl(string type, string id, string text)
{
Control ctrl;
switch(type)
{
case: "TextBox"
ctrl= (TextBox)TemplateControl.ParseControl("<asp:Textbox runat=\"server\" />");
((TextBox)ctrl).Id = id;
((TextBox)ctrl).Text = text;
break;
}
return ctrl;
}