2014-10-03 5 views
1

У меня есть атрибут фильтра действий, который имеет свойство, которое должно быть введено AutoFac. Поскольку это атрибут фильтра действий, я не могу использовать инъекцию конструктора.Autofac не разрешает впрыснутое свойство

недвижимости:

private readonly ISocialAppUnitOfWork _socialAppUnitOfWork; 

Resolve:

public SecurityActionFilter() 
    { 
      _socialAppUnitOfWork = DependencyResolver.Current.GetService <ISocialAppUnitOfWork>(); 
    } 

Config:

builder.RegisterType<SecurityActionFilter>().InstancePerHttpRequest(); 

    DependencyResolver.SetResolver(new AutofacDependencyResolver(builder.Build())); 

После получения Servi ce в конструкторе свойство _socialAppUnitOfWork остается равным нулю.

Почему он не разрешает мою зависимость?

+0

Скорее всего, потому что это 'private'. – silkfire

ответ

1

Это сделал трюк:

// Set this action filter for every controller and inject interface 
    builder.Register(c => new SecurityActionFilter(c.Resolve<ISocialAppUnitOfWork>())) 
      .AsActionFilterFor<Controller>().InstancePerHttpRequest(); 

    // Register all the action filters 
    builder.RegisterFilterProvider(); 
0

Попробуйте использовать: builder.RegisterType(). As(). InstancePerHttpRequest();

Смежные вопросы