我有一個對象o和一個類型t。我想用反射來改變對象o在運行時輸入T而不需要實例化它。在運行時在vb.net或c中爲對象分配一個類型#
在編譯時當量是:
Dim p as Point = Nothing
我知道如何使用Activator.CreateInstance來在運行時創建實例,它等同於:
Dim p as New Point()
但我不」不想這樣做。我不知道類型的構造函數參數,有些類型沒有無參數的構造函數。例如。字體。
所以,綜上所述,我想執行的等價的方式:
Dim o as T = Nothing
在你想知道爲什麼我做這種情況下,那是因爲我使用的PropertyGrid在窗體上編輯類型。如果這是第一次編輯字體,那麼將未初始化的字體傳遞給PropertyGrid會使網格顯示默認值。
乾杯。
ETA:
我試圖 'O = GetUninitializedObject(T)',但PropertyGrid中任一希望正確初始化對象或對象,具有限定的類型,設置爲無。
其實我已經解決了我在這裏的特殊問題:
how-to-use-the-property-grid-in-a-form-to-edit-any-type
,但我仍然有興趣知道如何分配類型在運行時不使用包裝類(我很幸運可以使用)。
Dim o as Font = Nothing,是否有與之相關聯的字體類型。我不能直接使用它,但我可以無錯地將它傳遞給PropertyGrid。你能否通過將o設置爲默認值(T)來解釋你的意思。謝謝。 – Jules 2009-07-23 13:33:34