FindCriteriaElement.cs source code in C# .NET

Source code for the .NET framework in C#

                        

Code:

/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / cdf / src / NetFx40 / System.ServiceModel.Discovery / System / ServiceModel / Discovery / Configuration / FindCriteriaElement.cs / 1305376 / FindCriteriaElement.cs

                            //---------------------------------------------------------------- 
// Copyright (c) Microsoft Corporation.  All rights reserved.
//---------------------------------------------------------------

namespace System.ServiceModel.Discovery.Configuration 
{
    using System.ComponentModel; 
    using System.Configuration; 
    using System.Diagnostics.CodeAnalysis;
    using System.Runtime; 
    using System.ServiceModel.Configuration;
    using System.Xml;
    using System.Xml.Linq;
 
    [Fx.Tag.XamlVisible(false)]
    public sealed class FindCriteriaElement : ConfigurationElement 
    { 
        ConfigurationPropertyCollection properties;
 
        [ConfigurationProperty(ConfigurationStrings.Types)]
        [SuppressMessage(
            FxCop.Category.Configuration,
            FxCop.Rule.ConfigurationPropertyNameRule, 
            Justification = "The configuration name for this element is 'types'.")]
        public ContractTypeNameElementCollection ContractTypeNames 
        { 
            get
            { 
                return (ContractTypeNameElementCollection)base[ConfigurationStrings.Types];
            }
        }
 
        [ConfigurationProperty(ConfigurationStrings.Scopes)]
        public ScopeElementCollection Scopes 
        { 
            get
            { 
                return (ScopeElementCollection)base[ConfigurationStrings.Scopes];
            }
        }
 
        [ConfigurationProperty(ConfigurationStrings.ScopeMatchBy)]
        [SuppressMessage(FxCop.Category.Configuration, FxCop.Rule.ConfigurationValidatorAttributeRule, Justification = "No validation requiered.")] 
        public Uri ScopeMatchBy 
        {
            get 
            {
                return (Uri)base[ConfigurationStrings.ScopeMatchBy];
            }
 
            set
            { 
                if (value == null) 
                {
                    throw FxTrace.Exception.ArgumentNull("value"); 
                }

                base[ConfigurationStrings.ScopeMatchBy] = value;
            } 
        }
 
        [ConfigurationProperty(ConfigurationStrings.Extensions)] 
        public XmlElementElementCollection Extensions
        { 
            get
            {
                return (XmlElementElementCollection)base[ConfigurationStrings.Extensions];
            } 
        }
 
        [ConfigurationProperty(ConfigurationStrings.Duration, DefaultValue = DiscoveryDefaults.DiscoveryOperationDurationString)] 
        [TypeConverter(typeof(TimeSpanOrInfiniteConverter))]
        [ServiceModelTimeSpanValidator(MinValueString = "00:00:00.001")] 
        public TimeSpan Duration
        {
            get
            { 
                return (TimeSpan)base[ConfigurationStrings.Duration];
            } 
 
            set
            { 
                base[ConfigurationStrings.Duration] = value;
            }
        }
 
        [ConfigurationProperty(ConfigurationStrings.MaxResults, DefaultValue = int.MaxValue)]
        [IntegerValidator(MinValue = 1, MaxValue = int.MaxValue)] 
        public int MaxResults 
        {
            get 
            {
                return (int)base[ConfigurationStrings.MaxResults];
            }
            set 
            {
                base[ConfigurationStrings.MaxResults] = value; 
            } 
        }
 
        protected override ConfigurationPropertyCollection Properties
        {
            get
            { 
                if (this.properties == null)
                { 
                    ConfigurationPropertyCollection properties = new ConfigurationPropertyCollection(); 

                    properties.Add( 
                        new ConfigurationProperty(
                        ConfigurationStrings.Types,
                        typeof(ContractTypeNameElementCollection),
                        null, 
                        null,
                        null, 
                        ConfigurationPropertyOptions.None)); 

                    properties.Add( 
                        new ConfigurationProperty(
                        ConfigurationStrings.ScopeMatchBy,
                        typeof(Uri),
                        DiscoveryDefaults.ScopeMatchBy, 
                        null,
                        null, 
                        ConfigurationPropertyOptions.None)); 

                    properties.Add( 
                        new ConfigurationProperty(
                        ConfigurationStrings.Scopes,
                        typeof(ScopeElementCollection),
                        null, 
                        null,
                        null, 
                        ConfigurationPropertyOptions.None)); 

                    properties.Add( 
                        new ConfigurationProperty(
                        ConfigurationStrings.Extensions,
                        typeof(XmlElementElementCollection),
                        null, 
                        null,
                        null, 
                        ConfigurationPropertyOptions.None)); 

                    properties.Add( 
                        new ConfigurationProperty(
                        ConfigurationStrings.Duration,
                        typeof(TimeSpan),
                        TimeSpan.FromSeconds(20), 
                        new TimeSpanOrInfiniteConverter(),
                        new TimeSpanOrInfiniteValidator(TimeSpan.FromMilliseconds(1), TimeSpan.MaxValue), 
                        ConfigurationPropertyOptions.None)); 

                    properties.Add( 
                        new ConfigurationProperty(
                        ConfigurationStrings.MaxResults,
                        typeof(int),
                        int.MaxValue, 
                        null,
                        new IntegerValidator(1, int.MaxValue), 
                        ConfigurationPropertyOptions.None)); 

                    this.properties = properties; 
                }
                return this.properties;
            }
        } 

        internal void ApplyConfiguration(FindCriteria findCriteria) 
        { 
            foreach (ContractTypeNameElement contractTypeNameElement in this.ContractTypeNames)
            { 
                findCriteria.ContractTypeNames.Add(
                    new XmlQualifiedName(
                    contractTypeNameElement.Name,
                    contractTypeNameElement.Namespace)); 
            }
 
            foreach (ScopeElement scopeElement in this.Scopes) 
            {
                findCriteria.Scopes.Add(scopeElement.Scope); 
            }

            foreach (XmlElementElement xmlElement in this.Extensions)
            { 
                findCriteria.Extensions.Add(XElement.Parse(xmlElement.XmlElement.OuterXml));
            } 
 
            findCriteria.ScopeMatchBy = this.ScopeMatchBy;
            findCriteria.Duration = this.Duration; 
            findCriteria.MaxResults = this.MaxResults;
        }

        internal void CopyFrom(FindCriteriaElement source) 
        {
            foreach (ContractTypeNameElement contractTypeNameElement in source.ContractTypeNames) 
            { 
                this.ContractTypeNames.Add(contractTypeNameElement);
            } 

            foreach (ScopeElement scopeElement in source.Scopes)
            {
                this.Scopes.Add(scopeElement); 
            }
 
            foreach (XmlElementElement extensionElement in source.Extensions) 
            {
                this.Extensions.Add(extensionElement); 
            }

            this.ScopeMatchBy = source.ScopeMatchBy;
            this.Duration = source.Duration; 
            this.MaxResults = source.MaxResults;
        } 
    } 
}

// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
                        

Link Menu

Network programming in C#, Network Programming in VB.NET, Network Programming in .NET
This book is available now!
Buy at Amazon US or
Buy at Amazon UK