フォームに奇妙な (私の目には) 問題があり、それは基本フォームのコンストラクターです。コンパイルしようとすると Visual Studio からエラーが発生することが予想されますが、すべてが成功し、エラーが発生するのは実行時にフォームが作成されるときだけです。
次のコンストラクターを持つ基本フォームがあります。
Public Sub New()
'SNIP
End Sub
Public Sub New(ByVal businessObjectID As Integer)
'SNIP
End Sub
Public Sub New(ByVal viewModel As BaseModel, ByVal childForm As Boolean)
'SNIP
End Sub
Public Sub New(ByVal unitOfWork As IUnitOfWork)
'SNIP
End Sub
上記の基本フォームから継承するフォームがあり、そのコンストラクターは次のとおりです。
Public Sub New(ByVal viewModel As BaseModel, ByVal parentTaskModel As TaskModel)
MyBase.New(viewModel)
InitializeComponent()
'SNIP
End Sub
問題は、派生フォームが作成されるときに、型 BaseModel を IUnitOfWork にキャストできないというエラーが表示されることです。今、私はこれを完全に理解しており、期待されています。MyBase.New(viewModel)
ただし、タイプが一致しないため、コードに行を書き込むときに Visual Studio がエラーを返すと予想していました。
たとえば、私が書くMyBase.New(string.Empty)
と、String から Int への変換に関するエラーが発生しますが、これも理解できます。ただし、そのコード行に任意の参照型を入れることができ、問題なくコンパイルされます。
なぜこれが起こっているのか、あるいはなぜ私の脳が愚かなのか、誰か説明できますか!