4

「アンビエントコンテナ」が静的クラスであるという事実と関係があると推測したいのですが、それは単なる推測です。

それとも、これは標準パターンを指していますか? (つまり、GoF の本を最初から最後まで読む必要がある)

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;
        }
    }
}
4

1 に答える 1

4

ええ、「アンビエント」は「共有され、誰もが利用できる」という意味です。

DI のどこかからの参照が必要な場合は、Mark Seemann の「Dependency Injection in .NET」本などで説明されている「Ambient Context」パターンを検索してください。

于 2012-04-19T19:45:44.577 に答える