Skip navigation

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!

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Connecting to %s

Follow

Get every new post delivered to your Inbox.