挿入/更新/削除操作で変更追跡フィールドを自動的に更新するために、UserAuthSession
オブジェクトの現在のインスタンス (ServiceStack から派生) をデータ アクセス リポジトリに挿入する正しい方法を見つけるのに苦労しています。AuthUserSession
サービスコードでリポジトリを新しくする場合、それは簡単なことで、次のようにします。
var repo = new MyRepository(SessionAs<UserAuthSession>());
ただし、私のリポジトリはサービスに自動配線 (注入) さUserAuthSession
れるため、IOC コンテナーへのリポジトリの登録用に定義されたラムダのどこかから取得する必要があります。
public class AppHost : AppHostBase
{
public override void Configure(Container container)
{
container.Register<ICacheClient>(new MemoryCacheClient());
container.Register<IRepository>(c =>
{
return new MyRepository(**?????**); <-- resolve and pass UserAuthSession
}
}
}
Service
次に、クラスの ServiceStack コードを見てみましょう。
private object userSession;
protected virtual TUserSession SessionAs<TUserSession>()
{
if (userSession == null)
{
userSession = TryResolve<TUserSession>(); //Easier to mock
if (userSession == null)
userSession = Cache.SessionAs<TUserSession>(Request, Response);
}
return (TUserSession)userSession;
}
Request
現在のとに基づいてキャッシュされたセッションを検索することがわかりますResponse
が、それらはラムダでは利用できません。
解決策は何ですか?それとも、まったく間違った角度から問題に取り組んでいますか?