Advertisement
Guest User

Untitled

a guest
Dec 18th, 2015
299
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 1.72 KB | None | 0 0
  1. public class UnityControllerSelector : DefaultHttpControllerSelector, IDisposable
  2.     {
  3.         private IUnityContainer Container { get; set; }
  4.         private HttpConfiguration Configuration { get; set; }
  5.         public UnityControllerSelector(HttpConfiguration configuration, IUnityContainer container)
  6.             : base(configuration)
  7.         {
  8.             this.Container = container;
  9.             this.Configuration = configuration;
  10.         }
  11.         public override IDictionary<string, HttpControllerDescriptor> GetControllerMapping()
  12.         {
  13.             var mapping = base.GetControllerMapping();
  14.             foreach(var controller in this.Container.Registrations.Where(c => c.RegisteredType == typeof(IHttpController)))
  15.             {
  16.                 mapping[controller.Name] = new HttpControllerDescriptor()
  17.                 {
  18.                     Configuration = this.Configuration,
  19.                     ControllerName = controller.Name,
  20.                     ControllerType = controller.MappedToType
  21.                 };
  22.             }
  23.             return mapping;
  24.         }
  25.         public override HttpControllerDescriptor SelectController(System.Net.Http.HttpRequestMessage request)
  26.         {
  27.             var controllerName = base.GetControllerName(request);
  28.             try
  29.             {
  30.                 var controller = Container.Resolve<IHttpController>(controllerName.ToLower());
  31.                 return new HttpControllerDescriptor(this.Configuration, controllerName, controller.GetType());
  32.             }
  33.             catch (ResolutionFailedException) { }
  34.             return base.SelectController(request);
  35.         }
  36.  
  37.         public void Dispose()
  38.         {
  39.             this.Container.Dispose();
  40.         }
  41.     }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement