PropertyDescriptorCollection ICustomTypeDescriptor.GetProperties(Attribute[] attributes)
        {
            PropertyDescriptorCollection pdc =
                TypeDescriptor.GetProperties(this, true);


            foreach (string extension in mExtensionApplicationAssociations.Keys)
            {
                ExtensionApplicationReturner ear = new ExtensionApplicationReturner(
                    extension, mExtensionApplicationAssociations);

                pdc = PropertyDescriptorHelper.AddProperty(pdc,
                                                           extension,
                                                           typeof(string), new AvailableApplicationsStringConverters(),
                                                           new Attribute[] { new CategoryAttribute("File Types") },
                                                           delegate(object sender, MemberChangeArgs args)
                {
                    SetApplicationForExtension(args.Member, (string)args.Value);
                }
                                                           ,
                                                           ear.GetApplication

                                                           );
            }

            return(pdc);
        }
        PropertyDescriptorCollection ICustomTypeDescriptor.GetProperties(Attribute[] attributes)
        {
            PropertyDescriptorCollection pdc =
                TypeDescriptor.GetProperties(this, true);


            foreach (string extension in mExtensionApplicationAssociations.Keys)
            {
                ExtensionApplicationReturner ear = new ExtensionApplicationReturner(
                    extension, mExtensionApplicationAssociations);

                pdc = PropertyDescriptorHelper.AddProperty(pdc,
                    extension,
                    typeof(string), new AvailableApplicationsStringConverters(),
                    new Attribute[] { new CategoryAttribute("File Types") },
                    delegate(object sender, MemberChangeArgs args)
                    {
                        SetApplicationForExtension(args.Member, (string)args.Value);
                    }
                    ,
                    ear.GetApplication

                    );

            }

            return pdc;
        }