2016-08-03 10:59:49 +00:00
|
|
|
//------------------------------------------------------------------------------
|
|
|
|
// Copyright (c) Microsoft Corporation. All rights reserved.
|
|
|
|
//------------------------------------------------------------------------------
|
|
|
|
|
|
|
|
namespace System.ServiceModel.Configuration
|
|
|
|
{
|
|
|
|
using System.Collections.ObjectModel;
|
|
|
|
using System.Configuration;
|
|
|
|
using System.ServiceModel;
|
|
|
|
using System.Security;
|
|
|
|
using System.Collections.Generic;
|
|
|
|
using System.ServiceModel.Description;
|
|
|
|
|
|
|
|
public partial class StandardEndpointCollectionElement<TStandardEndpoint, TEndpointConfiguration> : EndpointCollectionElement
|
|
|
|
where TStandardEndpoint : ServiceEndpoint
|
|
|
|
where TEndpointConfiguration : StandardEndpointElement, new ()
|
|
|
|
{
|
|
|
|
|
|
|
|
[ConfigurationProperty(ConfigurationStrings.DefaultCollectionName, Options = ConfigurationPropertyOptions.IsDefaultCollection)]
|
|
|
|
public StandardEndpointElementCollection<TEndpointConfiguration> Endpoints
|
|
|
|
{
|
|
|
|
get { return (StandardEndpointElementCollection<TEndpointConfiguration>)base[ConfigurationStrings.DefaultCollectionName]; }
|
|
|
|
}
|
|
|
|
|
|
|
|
public override Type EndpointType
|
|
|
|
{
|
|
|
|
get { return typeof(TStandardEndpoint); }
|
|
|
|
}
|
|
|
|
|
|
|
|
public override ReadOnlyCollection<StandardEndpointElement> ConfiguredEndpoints
|
|
|
|
{
|
|
|
|
get
|
|
|
|
{
|
|
|
|
List<StandardEndpointElement> configuredEndpoints = new List<StandardEndpointElement>();
|
|
|
|
foreach (StandardEndpointElement configuredEndpoint in this.Endpoints)
|
|
|
|
{
|
|
|
|
configuredEndpoints.Add(configuredEndpoint);
|
|
|
|
}
|
|
|
|
|
|
|
|
return new ReadOnlyCollection<StandardEndpointElement>(configuredEndpoints);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
public override bool ContainsKey(string name)
|
|
|
|
{
|
|
|
|
StandardEndpointCollectionElement<TStandardEndpoint, TEndpointConfiguration> me = (StandardEndpointCollectionElement<TStandardEndpoint, TEndpointConfiguration>)this;
|
2017-08-21 15:34:15 +00:00
|
|
|
#pragma warning suppress 56506 //Microsoft; me.Endpoints can never be null (underlying configuration system guarantees)
|
2016-08-03 10:59:49 +00:00
|
|
|
return me.Endpoints.ContainsKey(name);
|
|
|
|
}
|
|
|
|
|
|
|
|
protected internal override StandardEndpointElement GetDefaultStandardEndpointElement()
|
|
|
|
{
|
|
|
|
return System.Activator.CreateInstance<TEndpointConfiguration>();
|
|
|
|
}
|
|
|
|
|
|
|
|
protected internal override bool TryAdd(string name, ServiceEndpoint endpoint, Configuration config)
|
|
|
|
{
|
|
|
|
// The configuration item needs to understand the ServiceEndpointType && be of type ServiceEndpoint
|
|
|
|
bool retval = (endpoint.GetType() == typeof(TStandardEndpoint)) &&
|
|
|
|
typeof(StandardEndpointElement).IsAssignableFrom(typeof(TEndpointConfiguration));
|
|
|
|
if (retval)
|
|
|
|
{
|
|
|
|
TEndpointConfiguration endpointConfig = new TEndpointConfiguration();
|
|
|
|
endpointConfig.Name = name;
|
|
|
|
endpointConfig.InitializeFrom(endpoint);
|
|
|
|
this.Endpoints.Add(endpointConfig);
|
|
|
|
}
|
|
|
|
return retval;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|