Пример #1
0
 /// <summary>
 /// Creates a new service endpoint
 /// </summary>
 public ServiceEndpoint(EndpointDescription description, IEndpointBinding binding)
 {
     this.m_description = description;
     this.m_dispatcher  = new EndpointDispatcher(this);
     this.m_operations  = description.Contract.Operations.Select(o => new EndpointOperation(this, o)).ToList();
     this.m_binding     = binding;
 }
Пример #2
0
        /// <summary>
        /// Registers the service behavior <paramref name="contractType"/> at base Uri <paramref name="baseUri"/>
        /// </summary>
        public ServiceEndpoint AddServiceEndpoint(Uri baseUri, Type contractType, IEndpointBinding binding)
        {
            if (baseUri == null)
            {
                throw new ArgumentNullException(nameof(baseUri));
            }
            else if (contractType == null)
            {
                throw new ArgumentNullException(nameof(contractType));
            }
            else if (this.m_endpoints.Any(o => o.Description.RawUrl == baseUri.ToString()))
            {
                throw new InvalidOperationException("Another endpoint has already been registered with this base URI");
            }
            else if (!contractType.IsAssignableFrom(this.m_serviceType))
            {
                throw new InvalidOperationException($"{this.m_serviceType.FullName} does not implement contract {contractType.FullName}");
            }

            var ep = new ServiceEndpoint(new EndpointDescription(baseUri, contractType), binding);

            this.m_endpoints.Add(ep);
            return(ep);
        }