ASP.net 将 FindControl 输出转换为参数
ASP.net Cast FindControl output to a parameter
我想将 FindControl 方法的输出转换为特定类型的控件,但我希望该类型本身作为参数传递。我第一次尝试:
public static List<T> GetList<T>(..., Type tp, ...)
{
...
tp castedCtrl = (panel.FindControl(ctrlPrefixName + i.ToString()) as tp);
...
}
这是我的首选结果,但根本无法编译。
我也试过了:
dynamic castedCtrl = Convert.ChangeType(panel.FindControl(ctrlPrefixName + i.ToString()), tp);
但这需要我所有 tp 的实现 IConvertible 接口,这是不需要的并且需要大量意外的工作。
如何将 FindControl 输出的输出转换为我想要的类型(实际上我想传递用户控件的名称 class)。
给你:
public static List<T> GetList<T, U>(Page page, string ctrlPrefixName)
where T : class
where U : Control
{
int i = 1;
U castedCtrl = page.FindControl(ctrlPrefixName + i.ToString()) as U;
return new List<T>();
}
为了使用它:
GetList<MyType, DropDownList>(this, "MyControl_");
我想将 FindControl 方法的输出转换为特定类型的控件,但我希望该类型本身作为参数传递。我第一次尝试:
public static List<T> GetList<T>(..., Type tp, ...)
{
...
tp castedCtrl = (panel.FindControl(ctrlPrefixName + i.ToString()) as tp);
...
}
这是我的首选结果,但根本无法编译。 我也试过了:
dynamic castedCtrl = Convert.ChangeType(panel.FindControl(ctrlPrefixName + i.ToString()), tp);
但这需要我所有 tp 的实现 IConvertible 接口,这是不需要的并且需要大量意外的工作。
如何将 FindControl 输出的输出转换为我想要的类型(实际上我想传递用户控件的名称 class)。
给你:
public static List<T> GetList<T, U>(Page page, string ctrlPrefixName)
where T : class
where U : Control
{
int i = 1;
U castedCtrl = page.FindControl(ctrlPrefixName + i.ToString()) as U;
return new List<T>();
}
为了使用它:
GetList<MyType, DropDownList>(this, "MyControl_");