最初に呼び出したときにデータベースからデータを取得し、このクラスの後続の呼び出しがアプリケーションの存続期間中同じデータを返すクラスを実装しようとしています。と呼ばれる。これは可能ですか?Autofacクラスのみの実装
これは私の試行例ですが、問題はObject not set to an instance of the Object
です。
Public Class session
Implements IContainerProviderAccessor
Shared _containerProvider As IContainerProvider
Private _IUserSessionService As IUserSessionService ' interface to stores data
Public Property Usersession As IUserSessionService
Get
Return _IUserSessionService
End Get
Set(value As IUserSessionService)
_IUserSessionService = value
End Set
End Property
Public ReadOnly Property ContainerProvider As IContainerProvider Implements IContainerProviderAccessor.ContainerProvider
Get
Return _containerProvider
End Get
End Property
Public Function GetConnection() As String
Dim UserSessionDetail As New UserSessionDetails
' Do we have a container if not register one
If IsNothing(_containerProvider) Then
RegisterConnection()
Dim UserSessionDetail As New UserSessionDetails
UserSessionDetail.connection_string = GoAndGetOneFromOtherSource
Usersession.AddSession(UserSessionDetail)
Return UserSessionDetail.connection_string
Else
Usersession.GetUserSession()
Return UserSessionDetail.connection_string
End If
End Function
Private Sub RegisterConnection()
Dim builder As ContainerBuilder = New ContainerBuilder()
builder.RegisterType(Of UserSessionService).As(Of IUserSessionService).InstancePerRequest()
'Auto Fac Binding
_containerProvider = New ContainerProvider(builder.Build())
End Sub
End Class
うん、もちろんそれが可能だ、Autofacの面では...あなたはすでにデータがある場合はそれを返すならば、フェッチしない場合、確認するために – Trey
をチェックし、静的なデータとメソッドを定義し、これをシングルトンオブジェクトに依存するか、またはオブジェクトをシングルトンにすることによって実行できます。別のオブジェクトが 'session'に依存関係を宣言すると、常に同じオブジェクトが使用されます。正直言って、これは私にはちょっと混乱しているようです。 'IContainerProviderAccessor'はHttpApplicationオブジェクトを拡張するためだけに使うべきで、このようなものではありません。おそらく[統合ドキュメント](http://autofac.readthedocs.io/en/latest/integration/webforms.html)を見直してください。 –