1

MVCコントローラー内で次のことを試みています:

Private ProductRepoitory As IProductRepository
Sub New()
    Me.New(New productsRepository(New ModelStateWrapper(Me.ModelState)))
End Sub

Sub New(ByVal repo As productsRepository)
    ProductRepoitory = repo
End Sub

ただし、この行は次のエラー メッセージをスローします。

Me.New(New productsRepository(New ModelStateWrapper(Me.ModelState)))

別のコンストラクターを呼び出す場合、構築中のオブジェクトへの暗黙的な参照は無効です

コンストラクター内でコンストラクターを呼び出していることを理解しています。他のコンストラクターはパラメーター、つまり失敗しているパラメーター部分を期待しています。

「私」を削除しても解決しません。コントローラーの ModelState をパラメーターとして ModelStateWrapper クラスに渡す必要があります。他の回避策はありますか?

4

2 に答える 2

3

を呼び出す前はMe.New()、オブジェクトはまだ構築されていません。
したがって、アクセスできませんMe

于 2013-11-13T23:16:19.923 に答える
2

Me.ModelStateでコンストラクター チェーンを作成する場合は使用できませんMe.New。別の方法は、次のような「初期化」メソッドを作成することです。

Private ProductRepoitory As IProductRepository
Sub New()
    Me.Initialize(New productsRepository(New ModelStateWrapper(Me.ModelState)))
End Sub

Sub New(ByVal repo As productsRepository)
    Me.Initialize(repo)
End Sub

Private Sub Initialize(ByVal repo As productsRepository)
    Me.ProductRepoitory = repo
End Sub

また、Me.ModelStateがプロパティであり、getter メソッドが値の何らかの初期化を行わない限り、Initializeメソッドに渡すMe.ModelStateと null になることに注意してください。この種のパターンは後で問題を引き起こす可能性が高いため、コードを少しリファクタリングすることを検討してください。

于 2013-11-13T23:20:15.720 に答える