我想创建一个创建各种控件的通用方法:
例如:
Literal l = CreateControl<Literal>("emails", "ltl", name.Name );
Panel p = CreateControl<Panel>("emails","pnl", name.Name);
我写的方法如下:
private T CreateControl<T>(string s1, string s2, string s3 )
where T : Control
{
T control = default(T);
control.ID = s1 + s2 + s3;
return T;
}
这给了我很多错误 1)返回T - T是一个类型参数,但用作变量
此外,在CreateControl方法中,我没有很多属性可以设置为控件,如Text,CssClass等。
有人可以告诉我如何实现这个目标?
答案 0 :(得分:0)
第一个问题:
private T CreateControl<T>(string s1, string s2, string s3 )
where T : Control
{
T control = default(T);
control.ID = s1 + s2 + s3;
return control;
}
关于你的第二个,我建议你创建一个类来保存你想要设置的参数,然后将该类传递给这个方法。
您的第二个问题尚未真正定义,您的参数命名会留下一些需要的东西,但是类似于:
public class ControlOptions
{
public string IDSuffix { get; set; }
public string ID { get; set; }
public string IDPrefex { get; set; }
public string CSSClass { get; set; }
... etc ...
}
...
private T CreateControl<T> (ControlOptions options) ...
...
var label = CreateControl<Label>(new ControlOptions () {
ID = "Test",
CssClass = "Something"
});