Я хочу добавить для каждого сеанса образ жизни одного из моих контроллеров в приложении ASP.NET MVC, но в настоящее время у него нет такой опции.Я искал переполнение стека и нашел следующее решение
public class PerSessionLifestyleManager : AbstractLifestyleManager
{
private readonly string PerSessionObjectID = "PerSessionLifestyleManager_" + Guid.NewGuid().ToString();
public override object Resolve(CreationContext context)
{
if (HttpContext.Current.Session[PerSessionObjectID] == null)
{
// Create the actual object
HttpContext.Current.Session[PerSessionObjectID] = base.Resolve(context);
}
return HttpContext.Current.Session[PerSessionObjectID];
}
public override void Dispose()
{
}
}
Но я хочу написать что-то вроде
cr => cr.LifeStyle.PerSession.Named(cr.Implementation.Name)
Я использую Castle Windsor 3.0 и обнаружил, что перечисление LifestyleTypeсодержится в пространстве имен Castle.Core, оно используется DefaultKernel.Мое предложение состоит в том, чтобы переопределить DefaultKernel, но я действительно не знаю, как сделать это без ошибок и, казалось бы, как будто PerSession образ жизни, если поставляется с DLL.