You've already forked linux-packaging-mono
							
							
		
			
				
	
	
		
			106 lines
		
	
	
		
			3.9 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			106 lines
		
	
	
		
			3.9 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
| //----------------------------------------------------------------
 | |
| // Copyright (c) Microsoft Corporation.  All rights reserved.
 | |
| //----------------------------------------------------------------
 | |
| 
 | |
| namespace System.ServiceModel.Discovery.Configuration
 | |
| {
 | |
|     using System.Configuration;
 | |
|     using System.Diagnostics.CodeAnalysis;
 | |
|     using System.Runtime;
 | |
|     using System.ServiceModel.Configuration;
 | |
|     using System.ServiceModel.Description;
 | |
|     using SR2 = System.ServiceModel.Discovery.SR;
 | |
| 
 | |
|     public sealed class ServiceDiscoveryElement : BehaviorExtensionElement
 | |
|     {
 | |
|         ConfigurationPropertyCollection properties;
 | |
| 
 | |
|         public ServiceDiscoveryElement()
 | |
|         {
 | |
|         }
 | |
| 
 | |
|         [ConfigurationProperty(ConfigurationStrings.AnnouncementEndpoints)]
 | |
|         public AnnouncementChannelEndpointElementCollection AnnouncementEndpoints
 | |
|         {
 | |
|             get
 | |
|             {
 | |
|                 return (AnnouncementChannelEndpointElementCollection)base[ConfigurationStrings.AnnouncementEndpoints];
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         [SuppressMessage(FxCop.Category.Configuration, FxCop.Rule.ConfigurationPropertyAttributeRule,
 | |
|             Justification = "This property is defined by the base class to determine the type of the behavior.")]
 | |
|         public override Type BehaviorType
 | |
|         {
 | |
|             get
 | |
|             {
 | |
|                 return typeof(ServiceDiscoveryBehavior);
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         protected override ConfigurationPropertyCollection Properties
 | |
|         {
 | |
|             get
 | |
|             {
 | |
|                 if (this.properties == null)
 | |
|                 {
 | |
|                     ConfigurationPropertyCollection properties = new ConfigurationPropertyCollection();
 | |
| 
 | |
|                     properties.Add(
 | |
|                         new ConfigurationProperty(
 | |
|                         ConfigurationStrings.AnnouncementEndpoints,
 | |
|                         typeof(AnnouncementChannelEndpointElementCollection), 
 | |
|                         null, 
 | |
|                         null, 
 | |
|                         null, 
 | |
|                         ConfigurationPropertyOptions.None));
 | |
| 
 | |
|                     this.properties = properties;
 | |
|                 }
 | |
|                 return this.properties;
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         protected internal override object CreateBehavior()
 | |
|         {
 | |
|             ServiceDiscoveryBehavior serviceDiscoveryBehavior = new ServiceDiscoveryBehavior();
 | |
| 
 | |
|             AnnouncementEndpoint announcementEndpoint;
 | |
|             foreach (ChannelEndpointElement channelEndpointElement in this.AnnouncementEndpoints)
 | |
|             {
 | |
|                 if (string.IsNullOrEmpty(channelEndpointElement.Kind))
 | |
|                 {
 | |
|                     throw FxTrace.Exception.AsError(
 | |
|                         new ConfigurationErrorsException(
 | |
|                         SR2.DiscoveryConfigAnnouncementEndpointMissingKind(
 | |
|                         typeof(AnnouncementEndpoint).FullName)));
 | |
|                 }
 | |
| 
 | |
|                 ServiceEndpoint serviceEndpoint = ConfigLoader.LookupEndpoint(channelEndpointElement, null);
 | |
|                 if (serviceEndpoint == null)
 | |
|                 {
 | |
|                     throw FxTrace.Exception.AsError(
 | |
|                         new ConfigurationErrorsException(
 | |
|                         SR2.DiscoveryConfigInvalidEndpointConfiguration(
 | |
|                         channelEndpointElement.Kind)));
 | |
|                 }
 | |
| 
 | |
|                 announcementEndpoint = serviceEndpoint as AnnouncementEndpoint;
 | |
|                 if (announcementEndpoint == null)
 | |
|                 {
 | |
|                     throw FxTrace.Exception.AsError(
 | |
|                         new InvalidOperationException(
 | |
|                         SR2.DiscoveryConfigInvalidAnnouncementEndpoint(
 | |
|                         channelEndpointElement.Kind,
 | |
|                         serviceEndpoint.GetType().FullName,
 | |
|                         typeof(AnnouncementEndpoint).FullName)));
 | |
|                 }
 | |
| 
 | |
|                 serviceDiscoveryBehavior.AnnouncementEndpoints.Add(announcementEndpoint);
 | |
|             }
 | |
| 
 | |
|             return serviceDiscoveryBehavior;
 | |
|         }
 | |
|     }
 | |
| }
 |