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