0

オブジェクトの作成はやや重く、コンストラクターに属していないため、静的 .Create() 関数を使用してオブジェクトを作成するためにデリゲート ファクトリを使用しています。このオブジェクト (UserToken) は、すべての Mvc コントローラーで使用されます。

私のコード例では、AutoFac デリゲート関数に登録して UserToken を作成するときに、リクエストごとに UserToken.Create() が複数回呼び出されることに気付きました。リクエストごとに 1 回だけ呼び出され、結果の UserToken が保存され、ビルダーによって再利用されることを期待していました。ここで何が欠けていますか?UserToken.Create は、リクエストごとに 1 回だけ呼び出されます。

builder.Register<Func<HttpContextBase, IUnitOfWork, UserAccountToken>>(
    c => {
            var db = c.Resolve<IUnitOfWork>();
            var hc = c.Resolve<HttpContextBase>();

            return (context, database) => { return UserAccountToken.Create(hc, db); };
         }).InstancePerRequest();

builder.Register<UserAccountToken>(
    c => {
            var db = c.Resolve<IUnitOfWork>();
            var hc = c.Resolve<HttpContextBase>();

            return UserAccountToken.Create(hc, db);

         }).As<IUserAccountToken>().InstancePerRequest();
4

1 に答える 1