[英]Casting to generic type fails in c#
我希望通過創建動態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”
有什么建議嗎?
嘗試添加通用約束:
private T GetControl<T>(ASPxGridView control, string element) where T : Control
{
var returnedElement = (T)control.FindEditFormTemplateControl(element);
return returnedElement;
}
您可以通過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);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.