Skip navigation

Tag Archives: ASP.Net MVC3

If, for whatever reason (I’m not going into this discussion), you’d like to inject your dependencies at the method level instead of using your constructor, like so:


public ActionResult Post(Whatever whatever, IMyDependency dependency)
{
	// use dependency here
}

Just create these two classes:

public class DependencyModelBinderProvider : IModelBinderProvider
{
	public IModelBinder GetBinder(Type modelType)
	{
		return modelType.IsAbstract ? new DependencyModelBinder() : null;
	}
}

public class DependencyModelBinder : IModelBinder
{
	object IModelBinder.BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext)
	{
		return DependencyResolver.Current.GetService(bindingContext.ModelType);
	}
}

And, of course, at bootstrap/app start time:

ModelBinderProviders.BinderProviders.Add(new DependencyModelBinderProvider());

VoilĂ , DI at method level in 2 minutes!

Follow

Get every new post delivered to your Inbox.