0

タイプが「オブジェクト」であるオブジェクトをユーザー定義のクラスタイプにキャストする方法がわかりません。

プライベートインスタンス変数があります:

Private studyType as Object

私がする必要があるのは、イベント処理メソッドからこのオブジェクトをインスタンス化することです。いいえ、インスタンス化しないでnew Object()ください。

基本的には次のようになります。

studyType = new VCEOnly()

Objectただし、タイプがとして定義されているため、クラスのサブと関数のみを使用できますObjectVCEOnlyそのため、サブと関数にアクセスできるように、クラスタイプにキャストする必要があります。

基本的に、studyTypeからにキャストする必要がありObjectますVCEOnly。宣言されたときstudyTypeのように事前に定義することは許可されていません。VCEOnly

4

2 に答える 2

2

次のものも使用できます。

dim studyType as Object = new VCEOnly()    

...

dim studyTypeVCE as VCEOnly = nothing
if trycast(studytype,VCEOnly) IsNot Nothing then
   studyTypeVCE = DirectCast(studytype,VCEOnly)
   '... do your thing
end if

ifステートメントは、オブジェクトを目的のタイプにキャストできるかどうかをチェックし、そうであれば、タイプVCEOnlyの変数にstudytypeのキャストを入力します。

于 2012-07-24T08:43:23.523 に答える
1

CTypeを使用して、あるタイプから別のタイプにオブジェクトをキャストします

このような何かがそれを行う必要があります:

Dim studyType as Object
Dim studyTypeVCE as New VCEOnly
studyTypeVCE = Ctype(studyType,VCEOnly)

または、これを行うことができます:

With CType(studyType, VCEOnly)
    .SomeVCEOnlyProperty = "SomeValue"
End With
于 2012-07-24T08:09:12.383 に答える