簡體   English   中英

將類型轉換為C#中的對象

[英]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或其基類中定義的所有成員。

對於您的問題,更一般的答案是將objForm

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM