File: AuthoringOM\Serializer\CompositeActivityTypeDescriptor.cs
Project: ndp\cdf\src\WF\Common\System.Workflow.ComponentModel.csproj (System.Workflow.ComponentModel)
namespace System.Workflow.ComponentModel.Serialization
{
    using System;
    using System.CodeDom;
    using System.ComponentModel;
    using System.ComponentModel.Design;
    using System.ComponentModel.Design.Serialization;
    using System.Collections;
    using System.Resources;
    using System.Workflow.ComponentModel.Design;
    using System.Collections.Generic;
    using Microsoft.CSharp;
    using System.Workflow.ComponentModel;
    using System.Workflow.ComponentModel.Compiler;
    using System.CodeDom.Compiler;
    using System.IO;
    using System.Reflection;
    using System.Diagnostics;
 
    #region CompositeActivityTypeDescriptor
 
    internal class CompositeActivityTypeDescriptor : CustomTypeDescriptor
    {
        ICustomTypeDescriptor realTypeDescriptor = null;
        public CompositeActivityTypeDescriptor(ICustomTypeDescriptor realTypeDescriptor)
            : base(realTypeDescriptor)
        {
            this.realTypeDescriptor = realTypeDescriptor;
        }
 
        public override PropertyDescriptorCollection GetProperties(Attribute[] attributes)
        {
            PropertyDescriptorCollection properties = base.GetProperties(attributes);
            if (attributes != null && attributes.Length == 1 && attributes[0] is DesignOnlyAttribute && !(attributes[0] as DesignOnlyAttribute).IsDesignOnly)
            {
                ArrayList readonlyProperties = new ArrayList();
                foreach (PropertyDescriptor property in properties)
                    readonlyProperties.Add(property);
 
                PropertyInfo propInfo = typeof(CompositeActivity).GetProperty("CanModifyActivities", BindingFlags.NonPublic | BindingFlags.Instance);
                readonlyProperties.Add(new ModifyActivitiesPropertyDescriptor(propInfo));
                return new PropertyDescriptorCollection((PropertyDescriptor[])readonlyProperties.ToArray(typeof(PropertyDescriptor)));
            }
            return properties;
        }
    }
 
 
    #endregion
}