WindsorViewModelLoader.cs

29 lines | 775 B Blame History Raw Download
namespace Web.Infrastructure
{
    using Castle.Windsor;
    using DotVVM.Framework.Hosting;
    using DotVVM.Framework.ViewModel.Serialization;
    using System;

    public class WindsorViewModelLoader : DefaultViewModelLoader
    {
        private readonly WindsorContainer _container;

        public WindsorViewModelLoader(WindsorContainer container)
        {
            _container = container;
        }

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

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