我希望通过创建动态GetControl方法来保存一些编码。我的想法是这样的
private T GetControl<T>(ASPxGridView control, string element)
{
var returnedElement = (T)control.FindEditFormTemplateControl(element);
return returnedElement;
}
我打电话给
var myElement = GetControl<ASPxTextBox>(myGridView, "UserId");
但是,这失败了:
无法将类型'System.Web.UI.Control'转换为'T'
有任何建议吗?
答案 0 :(得分:4)
尝试添加通用约束:
private T GetControl<T>(ASPxGridView control, string element) where T : Control
{
var returnedElement = (T)control.FindEditFormTemplateControl(element);
return returnedElement;
}
答案 1 :(得分:3)
您可以通过object
:
var returnedElement = (T)(object)control.FindEditFormTemplateControl(element);
此外,如果仅出于自我记录的目的,我会将您的泛型类型约束为Web.UI.Control
:
private T GetControl<T>(ASPxGridView control, string element)
where T: System.Web.UI.Control
{
return (T)control.FindEditFormTemplateControl(element);
}