コード例 #1
0
        internal static void SetupSingleton <TService>(ServiceDescription serviceDescription, TService implementation) where TService : class
        {
            ServiceBehaviorAttribute serviceBehavior = EnsureBehaviorAttribute(serviceDescription);

            if (serviceBehavior.InstanceContextMode == InstanceContextMode.Single)
            {
                if (implementation == null)
                {
                    // implementation will only be null if not provided using DI
                    implementation = CreateImplementation <TService>();
                    serviceBehavior.SetHiddenSingleton(implementation);
                }
                else
                {
                    serviceBehavior.SetWellKnownSingleton(implementation);
                }
            }
        }
コード例 #2
0
        private static void SetupSingleton(System.ServiceModel.Description.ServiceDescription serviceDescription, object implementation, bool isWellKnown)
        {
            ServiceBehaviorAttribute attribute = EnsureBehaviorAttribute(serviceDescription);
            Type serviceType = serviceDescription.ServiceType;

            if ((implementation == null) && (attribute.InstanceContextMode == InstanceContextMode.Single))
            {
                implementation = CreateImplementation(serviceType);
            }
            if (isWellKnown)
            {
                attribute.SetWellKnownSingleton(implementation);
            }
            else if ((implementation != null) && (attribute.InstanceContextMode == InstanceContextMode.Single))
            {
                attribute.SetHiddenSingleton(implementation);
            }
        }
コード例 #3
0
        internal static void SetupSingleton <TService>(ServiceDescription serviceDescription, IServiceProvider services) where TService : class
        {
            ServiceBehaviorAttribute serviceBehavior = serviceDescription.Behaviors.Find <ServiceBehaviorAttribute>();

            Debug.Assert(serviceBehavior != null, "EnsureServiceBehavior should have ensured the serviceBehavior");

            if (serviceBehavior.InstanceContextMode == InstanceContextMode.Single)
            {
                TService implementation = services.GetService <TService>();
                if (implementation == null)
                {
                    implementation = CreateImplementation <TService>();
                    serviceBehavior.SetHiddenSingleton(implementation);
                }
                else
                {
                    serviceBehavior.SetWellKnownSingleton(implementation);
                }
            }
        }