.NET2.0ベースのVBです。次のコードをビルドしようとすると、CTypeの部分がエラーとなり、「変換演算子によって、ある型からその派生型に変換することはできません」とメッセージがでます。派生クラスに対して、ある一定の法則でダウンキャストさせたいのですが、なぜ不可能なのでしょうか。また、このようなアプローチは間違っているでしょうか。
Public Class Class1
' このクラスは別ファイルに定義されており、
' そのファイルは ReadOnly。
Public foo
Public bar
Public baz
End Class
Partial Class Class1
' 継承クラスで実装すると、クラス階層構造がより一層複雑になるので、Partial として実装。
' ダウンキャスト用にキャスト演算をオーバーロード
Public Shared Narrowing Operator CType(ByVal value As Class1) As Class2
Dim result As New Class2
' .foo は移さない!
result.bar = value.bar
result.baz = value.baz
Return result
End Operator
End Class
Public Class Class2 : Inherits Class1
Public hoge
End Class
お礼
ありがとうございます。