- 題名: Type型を使った型の比較
- 日時: 2012/02/07 16:01:50
- ID: 29789
- この記事の返信元:
- (なし)
- この記事への返信:
- [29790] Re[1]: Type型を使った型の比較2012/02/07 16:36:58
- [29791] Re[1]: Type型を使った型の比較2012/02/07 16:50:58
- ツリーを表示
2012/02/07(Tue) 16:53:10 編集(投稿者)
2012/02/07(Tue) 16:51:25 編集(投稿者)
■No29789に返信(FutoNekoさんの記事)
あっているか分かりませんが、こんな感じでどうででょう?
Public Class Form1
Inherits Form
・・・
Dim tpForm = GetType(Form)
If tpForm.IsAssignableFrom(Me.GetType) Then
Dim a As Form = Me
End If
Dim tpClass1 = GetType(Class1)
If tpClass1.GetMethod("op_Implicit", New Type() {Me.GetType}) IsNot Nothing Then
Dim b = CType(Me, Class1)
End If
・・・
End Class
Class Class1
Public Property Name As String
Public Shared Narrowing Operator CType(obj1 As Form1) As Class1
Return New Class1 With {.Name = obj1.Name}
End Operator
End Class
分類:[.NET]
こんにちは。 Type型変数との比較について教えてください。 type型の変数に入れた値に対して キャスト可能かどうかを調べたいので次のコードを書きましたが ビルドが通りません。 単純にビルドを通したいわけではなくて、type型変数に対して それにキャスト可能かどうかを知りたいです。 Class TestClassA End Class Class TestClassB Inherits TestClassA End Class Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.Windows.RoutedEventArgs) Handles Button3.Click Dim typeValue As Type typeValue = GetType(TestClassA) If TypeOf (New TestClassB) Is typeValue Then MsgBox("OK") Else MsgBox("NOT OK") End If End Sub TypeOf演算子は TypeOf オブジェクト Is 型 なら比較可能ですが Type型との比較は許容していない様子です。 Type型変数を経由せずに If TypeOf (New TestClassB) Is TestClassA Then このようにすればビルドも通りOKが出ることは確認していますが 今回はType変数を引数としている関数を作成しているので 直接の記述はしたくありません。 また、下記のように書くと ビルドは通りますが、NOT OK になってしまいます。 Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.Windows.RoutedEventArgs) Handles Button3.Click Dim typeValue As Type typeValue = GetType(TestClassA) Dim TestB As New TestClassB If TestB.GetType Is typeValue Then MsgBox("OK") Else MsgBox("NOT OK") End If End Sub Type型変数を経由してあるオブジェクトの型に キャスト可能かどうかということを調べるにはどのようにすれば よろしいでしょうか? ご存知の方おられましたら教えてください。 よろしくお願いします。