0

我想创建一个通用方法来创建各种控件:

例如:

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) return T -- T 是一个类型参数,但像变量一样使用

此外,我在 CreateControl 方法中设置的控件属性并不多,例如 Text、CssClass 等。

有人可以告诉我如何实现这一目标吗?

4

1 回答 1

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"
});
于 2013-09-06T11:13:15.347 回答