Bom, é o seguinte:
Fiz a criação do filtro conforme o exercício tinha orientado:
using NHibernate;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Http.Filters;
using System.Web.Mvc;
namespace LojaWeb.Filters
{
public class TransactionFilter : System.Web.Mvc.ActionFilterAttribute
{
private ISession session;
public TransactionFilter(ISession session)
{
this.session = session;
}
public override void OnActionExecuting(ActionExecutingContext contexto)
{
session.BeginTransaction();
}
public override void OnActionExecuted(ActionExecutedContext contexto)
{
if (contexto.Exception == null)
{
session.Transaction.Commit();
}
else
{
session.Transaction.Rollback();
}
session.Close();
}
}
}
Mas na hora que vou registrá-lo no NinjectWebCommon dentro do método RegisterServices, como o exercício orientou:
private static void RegisterServices(IKernel kernel)
{
kernel.Bind<ISession>().ToMethod(
x => NHibernateHelper.AbreSession()).InRequestScope();
int ordemExecucao = 1;
//A linha seguinte esta dando erro
kernel.BindFilter<TransactionFilter>(FilterScope.Global, ordemExecucao);
}
Fica dando este erro:
Error 4 'Ninject.IKernel' does not contain a definition for 'BindFilter' and the best extension method overload 'Ninject.Web.Mvc.FilterBindingSyntax.BindingRootExtensions.BindFilter<T>(Ninject.Syntax.IBindingRoot, System.Web.Mvc.FilterScope, int?)' has some invalid arguments C:\Projetos\LojaWeb\LojaWeb\LojaWeb\App_Start\NinjectWebCommon.cs 65 13 LojaWeb
Detalhe que importei o namespace que foi pedido pra usar:
using Ninject.Web.Mvc.FilterBindingSyntax;
Alguém poderia me dar uma sugestão pra corrigir isto?