WindsorViewModelLoader.cs

29 lines | 826 B Blame History Raw Download
namespace DotVvmCastleWindsor.Helpers
{
    using Castle.Windsor;
    using DotVVM.Framework.Hosting;
    using DotVVM.Framework.ViewModel.Serialization;
    using System;

    public class WindsorViewModelLoader : DefaultViewModelLoader
    {
        private readonly WindsorContainer _windsorContainer;

        public WindsorViewModelLoader(WindsorContainer windsorContainer)
        {
            _windsorContainer = windsorContainer;
        }

        protected override object CreateViewModelInstance(Type viewModelType, IDotvvmRequestContext context)
        {
            return _windsorContainer.Resolve(viewModelType);
        }

        public override void DisposeViewModel(object instance)
        {
            _windsorContainer.Release(instance);
            base.DisposeViewModel(instance);
        }
    }
}