Webコントロールを作成するために使用している以下のメソッドがあります(今のところ、リテラルとパネルだけです)
private T CreateControl<T>(string s1, string s2, string m1)
where T: WebControl , new()
{
T ctrl = default(T);
if (ctrl is Literal )
{
Literal l = new Literal();
l.ID = s1 + "ltl" + s2;
l.Text = s1 + " " + s2;
ctrl = (Literal)l;
}
else if (ctrl is Panel)
{
Panel p = new Panel();
p.ID = s1+ "pnl" + s2;
p.CssClass = s1 + "graphs";
p.Attributes.Add("responsefield", s2);
p.Attributes.Add("metricid", m1);
ctrl = (Panel)l;
}
else if (ctrl is CheckBox)
return ctrl;
}
私はこれを次のように呼び出しています:
Literal lg = CreateControl<Literal>("emails", name.Name, name.MetricId.ToString() );
しかし、変換は次の場所で失敗しています:
ctrl = (Literal)l;
ctrl = (Panel)p;
エラー:
Cannot implicitly convert type 'System.Web.UI.WebControls.Panel' to 'T'
誰かがこの変換を処理する方法をアドバイスできますか?
前もって感謝します...