Question

I want to guess that "ambient container" has something to do with the fact that it's a static class, but that's just a guess.

Or is this referring to a standard pattern? (i.e. I really need to read that GoF book cover to cover)

namespace Microsoft.Practices.ServiceLocation
{
    /// <summary>
    /// This class provides the ambient container for this application. If your
    /// framework defines such an ambient container, use ServiceLocator.Current
    /// to get it.
    /// </summary>
    public static class ServiceLocator
    {
        private static ServiceLocatorProvider currentProvider;

        /// <summary>
        /// The current ambient container.
        /// </summary>
        public static IServiceLocator Current
        {
            get { return currentProvider(); }
        }

        /// <summary>
        /// Set the delegate that is used to retrieve the current container.
        /// </summary>
        /// <param name="newProvider">Delegate that, when called, will return
        /// the current ambient container.</param>
        public static void SetLocatorProvider(ServiceLocatorProvider newProvider)
        {
            currentProvider = newProvider;
        }
    }
}
Was it helpful?

Solution

Yep, "ambient" is supposed to mean "shared, available to everyone".

If you need a reference from somewhere around the DI, search for the "Ambient Context" pattern, described for example in Mark Seemann's "Dependency Injection in .NET" book.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top