AttachedPropertiesService.cs source code in C# .NET

Source code for the .NET framework in C#

                        

Code:

/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / cdf / src / NetFx40 / Tools / System.Activities.Presentation / System / Activities / Presentation / Model / AttachedPropertiesService.cs / 1305376 / AttachedPropertiesService.cs

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

namespace System.Activities.Presentation.Model 
{
    using System; 
    using System.Collections.Generic; 
    using System.Linq;
    using System.Text; 
    using System.Runtime;

    public class AttachedPropertiesService
    { 
        List properties;
 
        public AttachedPropertiesService() 
        {
            this.properties = new List(); 
        }

        public void AddProperty(AttachedProperty property)
        { 
            if (property == null)
            { 
                throw FxTrace.Exception.AsError(new ArgumentNullException("property")); 
            }
            if (string.IsNullOrEmpty(property.Name)) 
            {
                throw FxTrace.Exception.AsError(new ArgumentException(SR.AttachedPropertyNameShouldNotBeEmpty));
            }
            this.properties.Add(property); 
        }
 
        internal IEnumerable GetAttachedProperties(Type modelItemType) 
        {
            var properties = from property in this.properties 
                where property.OwnerType.IsAssignableFrom(modelItemType) select property;

            if (modelItemType.IsGenericType)
            { 
                var propertiesFromGenericRoot = from property in this.properties
                                                where property.OwnerType.IsAssignableFrom(modelItemType.GetGenericTypeDefinition()) 
                                                select property; 
                properties = properties.Concat(propertiesFromGenericRoot).Distinct();
            } 

            return properties;
        }
    } 

} 

// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
//---------------------------------------------------------------- 
// Copyright (c) Microsoft Corporation.  All rights reserved.
//---------------------------------------------------------------

namespace System.Activities.Presentation.Model 
{
    using System; 
    using System.Collections.Generic; 
    using System.Linq;
    using System.Text; 
    using System.Runtime;

    public class AttachedPropertiesService
    { 
        List properties;
 
        public AttachedPropertiesService() 
        {
            this.properties = new List(); 
        }

        public void AddProperty(AttachedProperty property)
        { 
            if (property == null)
            { 
                throw FxTrace.Exception.AsError(new ArgumentNullException("property")); 
            }
            if (string.IsNullOrEmpty(property.Name)) 
            {
                throw FxTrace.Exception.AsError(new ArgumentException(SR.AttachedPropertyNameShouldNotBeEmpty));
            }
            this.properties.Add(property); 
        }
 
        internal IEnumerable GetAttachedProperties(Type modelItemType) 
        {
            var properties = from property in this.properties 
                where property.OwnerType.IsAssignableFrom(modelItemType) select property;

            if (modelItemType.IsGenericType)
            { 
                var propertiesFromGenericRoot = from property in this.properties
                                                where property.OwnerType.IsAssignableFrom(modelItemType.GetGenericTypeDefinition()) 
                                                select property; 
                properties = properties.Concat(propertiesFromGenericRoot).Distinct();
            } 

            return properties;
        }
    } 

} 

// 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