0

私が持っているとしましょう:

Class Vehicle
    Public Property NumberOfWheels As Integer
End Class

Class Bicycle
    Inherits Vehicle

End Class

そうです:

Dim b = New Bicycle() With {.NumberOfWheels = 2}
Dim v As Vehicle = CType(b, Vehicle)

コードをデバッグしてマウスでオブジェクトをホバーするときvはまだです。BicycleBicycle 型のオブジェクトから Vehicle 型のオブジェクトを取得するにはどうすればよいですか? 手動で行う必要がありますか?

4

1 に答える 1

0

私はあなたに明白な解決策を与えるつもりでした:

Class Bicycle
    Inherits Vehicle

    Public Shared Widening Operator CType(value As Bicycle) As Vehicle
        Return New Vehicle With {.NumberOfWheels = value.NumberOfWheels}
    End Operator

End Class

ただし、コンパイラ エラーも発生します。

変換演算子は型からその基本型に変換できません

MSDN でクイック検索を実行すると、次の説明が表示されます。

コンパイル時に、Visual Basic は、任意の参照型からその継承階層内の任意の型 (つまり、派生元または派生元の型) への定義済みの変換が存在すると見なします。このような変換は実行時に失敗する可能性がありますが、コンパイラは実行時の結果を予測できないため、そのような変換をコンパイルできます。

簡単に言うと、そこから派生する各クラスにカスタム実装を実装ISerializableして提供する必要があると思います。Vehicle

于 2013-02-18T15:10:59.453 に答える