public void AddService(Type serviceType, object serviceInstance, bool promote) { if (serviceType == null) { throw new ArgumentNullException("serviceType"); } if (serviceInstance == null) { throw new ArgumentNullException("serviceInstance"); } if (!(serviceInstance is ServiceCreatorCallback) && !serviceType.IsInstanceOfType(serviceInstance)) { throw new ArgumentException( CommonResourceUtil.GetString(Resources.ServiceProvider_InvalidServiceInstance, serviceType.FullName, "serviceInstance")); } if (promote && ParentContainer != null) { ParentContainer.AddService(serviceType, serviceInstance, promote); return; } lock (this) { if (Services.ContainsKey(serviceType)) { throw new InvalidOperationException( CommonResourceUtil.GetString(Resources.ServiceProvider_ServiceAlreadyExists, serviceType.FullName)); } Services.Add(serviceType, serviceInstance); } }
public void AddService(Type serviceType, ServiceCreatorCallback callback, bool promote) { if (serviceType == null) { throw new ArgumentNullException("serviceType"); } if (callback == null) { throw new ArgumentNullException("callback"); } if (promote && ParentContainer != null) { ParentContainer.AddService(serviceType, callback, promote); return; } lock (this) { if (Services.ContainsKey(serviceType)) { throw new InvalidOperationException( CommonResourceUtil.GetString(Resources.ServiceProvider_ServiceAlreadyExists, serviceType.FullName)); } Services.Add(serviceType, callback); } }