2009-07-23 10 views
0

にオブジェクトを割り当てます。私はオブジェクトoとタイプTを持っています。オブジェクトoを実行時にインスタンス化せずにT型に変更するためにリフレクションを使用したいと思います。コンパイル時に実行時にvb.netまたはc#

相当するものは次のようになります。「

Dim p as New Point() 

しかし、私はドン:

Dim p as Point = Nothing 

私はと等価である、実行時にインスタンスを作成するためにActivator.CreateInstanceを使用する方法を知っていますこれをやりたい私は型のコンストラクタパラメータを知らず、パラメータのないコンストラクタを持たない型もあります。例えば。フォント。

ので、合計する、私は同等の実行の仕方たい:私はPropertyGridのを使用していますので、私はこれをやっているなぜあなたは迷っている場合は

Dim o as T = Nothing 

を、それはですタイプを編集するためのフォームにこれがFontを編集する初めての場合、初期化されていないFontをPropertyGridに渡すと、グリッドがデフォルト値を表示します。

乾杯。

ETA:

I 'はO = GetUninitializedObject(T)' 試みたが、PropertyGridのは何も設定され定義されたタイプと、正しく初期化オブジェクトまたはオブジェクトを望んでいるのいずれか。

私は実際にここに私の特定の問題を解決しました:

how-to-use-the-property-grid-in-a-form-to-edit-any-type

を、私はまだ(ラッパークラスを使用せずに、実行時にタイプを割り当てる方法を知って興味があると思います私はそれが使用できるほど幸運でした)。

答えて

2

最も近いことは、デフォルト(T)にoを設定することです。デフォルトがNothing(null)でないと仮定すると、Rectangle.Emptyや0(int)などのデフォルト値が得られます。

Nothing(null)には型が関連付けられていないため、オブジェクトとしてのo(T)は何も役に立ちません。

+0

Dim o as Font = Nothing、フォントタイプは関連付けられています。インスタンス化されるまでは使用できませんが、エラーなくPropertyGridに渡すことができます。あなたはset oの意味をデフォルト(T)に説明できますか?ありがとう。 – Jules

+0

私が見ることができるから、オブジェクトをデフォルト(T)に設定することは、VB.NetでNothingに設定するのと同じです。 – Jules

+1

"Dim o as Font = Nothing"の場合、変数oの型はFontです。何もない部分は「フォントなし」ではなく、「オブジェクトなし」です。基本的には、どちらか一方を実行する必要があります。変数が型を持っている(オブジェクトが機能しない)か、変数内の値が型を持っています(何も動作しません)。 "Object"に "Nothing"がある場合は、それがあなたが意味するものを知る方法がありません。ラッパーの使用はおそらくあなたの最善の策です。 –

関連する問題