Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public class UnityControllerSelector : DefaultHttpControllerSelector, IDisposable
- {
- private IUnityContainer Container { get; set; }
- private HttpConfiguration Configuration { get; set; }
- public UnityControllerSelector(HttpConfiguration configuration, IUnityContainer container)
- : base(configuration)
- {
- this.Container = container;
- this.Configuration = configuration;
- }
- public override IDictionary<string, HttpControllerDescriptor> GetControllerMapping()
- {
- var mapping = base.GetControllerMapping();
- foreach(var controller in this.Container.Registrations.Where(c => c.RegisteredType == typeof(IHttpController)))
- {
- mapping[controller.Name] = new HttpControllerDescriptor()
- {
- Configuration = this.Configuration,
- ControllerName = controller.Name,
- ControllerType = controller.MappedToType
- };
- }
- return mapping;
- }
- public override HttpControllerDescriptor SelectController(System.Net.Http.HttpRequestMessage request)
- {
- var controllerName = base.GetControllerName(request);
- try
- {
- var controller = Container.Resolve<IHttpController>(controllerName.ToLower());
- return new HttpControllerDescriptor(this.Configuration, controllerName, controller.GetType());
- }
- catch (ResolutionFailedException) { }
- return base.SelectController(request);
- }
- public void Dispose()
- {
- this.Container.Dispose();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement