Pod
Pod

Reputation: 235

Implement Unity MVC 5 dependency injection in ActionFilter

I'm trying to inject this user service via Unity (mvc5) in an actionfilter but it is null. How can I implement this?

public class TestFilter : ActionFilterAttribute
{
    // this is always null
    [Dependency]
    public IUserService UserService { get; set; }

    // other members
}

Upvotes: 3

Views: 3486

Answers (1)

Sam FarajpourGhamari
Sam FarajpourGhamari

Reputation: 14741

You must register UnityFilterAttributeFilterProvider as a FilterProvider first.

Modify the App_Start > UnityMvcActivator's Start method like this:

public static void Start()
{
    var container = UnityConfig.GetConfiguredContainer();

    FilterProviders.Providers.Remove(FilterProviders.Providers.OfType<FilterAttributeFilterProvider>().First());
    FilterProviders.Providers.Add(new UnityFilterAttributeFilterProvider(container));

    DependencyResolver.SetResolver(new UnityDependencyResolver(container));

    Microsoft.Web.Infrastructure.DynamicModuleHelper.DynamicModuleUtility.RegisterModule(typeof(UnityPerRequestHttpModule));
}

If you could not find the method. You probably installed wrong or out of date package. consider installing Install-Package Unity.Mvc on the package manager console.

Upvotes: 2

Related Questions