2009-05-20 5 views
1

は私が書いているメソッドはObject型のパラメータを渡されオブジェクトを型structのnullableにキャストする方法はありますか?私はそこで働いているコードベースで

Public Sub SetDropDownValue(Of T As Structure)(ByVal target As ListControl, ByVal value As Nullable(Of T)) 

シグネチャを持つメソッドを持っています。

SetDropDownValueメソッドに渡すことができるものにオブジェクトをキャストするにはどうすればよいですか?

答えて

0

いいえ、参照型を値型(これはStructureという制約が意味するもの)としてキャストできません。 CLRでは、参照型(これはボクシングと呼ばれます)として値型をキャストできますが、これらの2つの異なる型の実装(およびセマンティクス)の違いによって、その逆は不可能になります。

あなたはフィールドとしてオブジェクトへの参照を保持する値型を作成することしかできないと思いますが、おそらくこの問題は間違った方法ですべてのことを行っているというヒントかもしれません。あなたがTを知っていれば

+0

コードが少し臭いものになっていたと思い始めました。再考する時間。 – ilivewithian

0

これは動作するはずです:

something.SetDropDownValue(target, DirectCast(value, Nullable(Of T))) 

詳細はこのarticleを参照してください。

タイプTがわからない場合は、問題があり、実行時にリフレクションを開始する必要があります。これは複雑で危険で、ひどいパフォーマンスがあります。

関連する問題