// Copyright (c) .NET Foundation. All rights reserved.
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
using System.Collections.Generic;
using System.Diagnostics.CodeAnalysis;
using System.Net.Http;
using System.Web.Http.Controllers;
namespace System.Web.Http.Dispatcher
{
///
/// Defines the methods that are required for an factory.
///
public interface IHttpControllerSelector
{
///
/// Selects a for the given .
///
/// The request message.
/// An instance.
HttpControllerDescriptor SelectController(HttpRequestMessage request);
///
/// Returns a map, keyed by controller string, of all that the selector can select.
/// This is primarily called by to discover all the possible controllers in the system.
///
/// A map of all that the selector can select, or null if the selector does not have a well-defined mapping of .
[SuppressMessage("Microsoft.Design", "CA1024:UsePropertiesWhereAppropriate", Justification = "This is better handled as a method.")]
IDictionary GetControllerMapping();
}
}