Я использую Delegate Factory для создания объекта с помощью статической функции .Create(), потому что создание объекта несколько тяжелое и не относится к конструктору. Этот объект (UserToken) используется на каждом контроллере Mvc.
Я заметил в своем примере кода, что при регистрации с помощью функции делегата AutoFac для создания UserToken UserToken.Create() вызывается несколько раз для каждого запроса. Я ожидал, что он будет вызываться только один раз для каждого запроса, а результирующий UserToken будет храниться и повторно использоваться сборщиком. Что мне здесь не хватает? Я хочу, чтобы UserToken.Create вызывался только один раз для каждого запроса.
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();