[英]Casting type to object in C#
我有一個要使通用顯示表單的功能。 我希望函數檢查表單是否已經打開,如果不創建表單的新實例並顯示它,則將其置於頂部。
檢查表單是否打開的第一部分一切都很好,但是我已經從T進行了轉換並創建了類型T的新表單對象。我已經使用此行代碼創建了obj = Activator.CreateInstance<T>();
但它並未顯示智能感知中的所有方法和屬性。 其中,代碼Form x = new Form1. x
Form x = new Form1. x
將顯示所有方法和屬性。
我確定我在做錯事,請為我照亮。
private static void ShowForm<T>( )
{
T obj = default( T );
List<T> opened = FormManager.GetListOfOpenForms<T>();
if ( opened.Count == 0 )
{
// not opened
// obj does not show all properties and methods
obj = Activator.CreateInstance<T>();
// x shows all properties and methods
frmLogin x = new frmLogin();
}
else
{
// opened
}
}
您需要約束T繼承Form
:
private static void ShowForm<T>() where T : Form, new()
一旦編譯器知道可以保證T
繼承了Form
,您就可以使用Form
或其基類中定義的所有成員。
對於您的問題,更一般的答案是將obj
為Form
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.