public void AddProviderToTypeAndInstance() {
            var instance = new Base();

            // Before adding TDPs
            var props = TypeDescriptor.GetProperties(instance).Cast<PropertyDescriptor>().
                Select(p => p.Name).ToArray();
            CollectionAssert.AreEquivalent(new[] { "A", "B" }, props);

            TypeDescriptionProvider typeProvider = null;
            TypeDescriptionProvider instanceProvider = null;
            try {
                typeProvider = new AssociatedMetadataTypeTypeDescriptionProvider(typeof(Base));
                TypeDescriptor.AddProvider(typeProvider, typeof(Base));

                instanceProvider = new TestTypeDescriptionProvider(instance);
                TypeDescriptor.AddProvider(instanceProvider, instance);

                // After adding TDPs
                props = TypeDescriptor.GetProperties(instance).Cast<PropertyDescriptor>().
                    Select(p => p.Name).ToArray();
                CollectionAssert.AreEquivalent(new[] { "A", "B", "CustomProperty1", "CustomProperty2" }, props);
            }
            finally {
                // Ensure we remove the providers we attached.
                TypeDescriptor.RemoveProvider(typeProvider, typeof(Base));
                TypeDescriptor.RemoveProvider(instanceProvider, instance);
            }
        }
Example #2
0
        public void AddProviderToTypeAndInstance()
        {
            var instance = new Base();

            // Before adding TDPs
            var props = TypeDescriptor.GetProperties(instance).Cast <PropertyDescriptor>().
                        Select(p => p.Name).ToArray();

            CollectionAssert.AreEquivalent(new[] { "A", "B" }, props);

            TypeDescriptionProvider typeProvider     = null;
            TypeDescriptionProvider instanceProvider = null;

            try {
                typeProvider = new AssociatedMetadataTypeTypeDescriptionProvider(typeof(Base));
                TypeDescriptor.AddProvider(typeProvider, typeof(Base));

                instanceProvider = new TestTypeDescriptionProvider(instance);
                TypeDescriptor.AddProvider(instanceProvider, instance);

                // After adding TDPs
                props = TypeDescriptor.GetProperties(instance).Cast <PropertyDescriptor>().
                        Select(p => p.Name).ToArray();
                CollectionAssert.AreEquivalent(new[] { "A", "B", "CustomProperty1", "CustomProperty2" }, props);
            }
            finally {
                // Ensure we remove the providers we attached.
                TypeDescriptor.RemoveProvider(typeProvider, typeof(Base));
                TypeDescriptor.RemoveProvider(instanceProvider, instance);
            }
        }
Example #3
0
        public void AddMultipleProvidersToType()
        {
            // Before adding TDPs
            var props = TypeDescriptor.GetProperties(typeof(Base)).Cast <PropertyDescriptor>().
                        Select(p => p.Name).ToArray();

            CollectionAssert.AreEquivalent(new[] { "A", "B" }, props);

            TypeDescriptionProvider associatedMetadataProvider = null;
            TypeDescriptionProvider testProvider = null;

            try {
                associatedMetadataProvider = new AssociatedMetadataTypeTypeDescriptionProvider(typeof(Base));
                TypeDescriptor.AddProvider(associatedMetadataProvider, typeof(Base));
                testProvider = new TestTypeDescriptionProvider(typeof(Base));
                TypeDescriptor.AddProvider(testProvider, typeof(Base));

                // After adding TDPs
                props = TypeDescriptor.GetProperties(typeof(Base)).Cast <PropertyDescriptor>().
                        Select(p => p.Name).ToArray();
                CollectionAssert.AreEquivalent(new[] { "A", "B", "CustomProperty1", "CustomProperty2" }, props);
            }
            finally {
                // Ensure we remove the providers we attached.
                TypeDescriptor.RemoveProvider(associatedMetadataProvider, typeof(Base));
                TypeDescriptor.RemoveProvider(testProvider, typeof(Base));
            }

            // Add providers in reverse order
            try {
                testProvider = new TestTypeDescriptionProvider(typeof(Base));
                TypeDescriptor.AddProvider(testProvider, typeof(Base));
                associatedMetadataProvider = new AssociatedMetadataTypeTypeDescriptionProvider(typeof(Base));
                TypeDescriptor.AddProvider(associatedMetadataProvider, typeof(Base));

                props = TypeDescriptor.GetProperties(typeof(Base)).Cast <PropertyDescriptor>().
                        Select(p => p.Name).ToArray();
                CollectionAssert.AreEquivalent(new[] { "A", "B", "CustomProperty1", "CustomProperty2" }, props);
            }
            finally {
                // Ensure we remove the providers we attached.
                TypeDescriptor.RemoveProvider(associatedMetadataProvider, typeof(Base));
                TypeDescriptor.RemoveProvider(testProvider, typeof(Base));
            }
        }
        public void AddMultipleProvidersToType() {
            // Before adding TDPs
            var props = TypeDescriptor.GetProperties(typeof(Base)).Cast<PropertyDescriptor>().
                Select(p => p.Name).ToArray();
            CollectionAssert.AreEquivalent(new[] { "A", "B" }, props);

            TypeDescriptionProvider associatedMetadataProvider = null;
            TypeDescriptionProvider testProvider = null;
            
            try {
                associatedMetadataProvider = new AssociatedMetadataTypeTypeDescriptionProvider(typeof(Base));
                TypeDescriptor.AddProvider(associatedMetadataProvider, typeof(Base));
                testProvider = new TestTypeDescriptionProvider(typeof(Base));
                TypeDescriptor.AddProvider(testProvider, typeof(Base));

                // After adding TDPs
                props = TypeDescriptor.GetProperties(typeof(Base)).Cast<PropertyDescriptor>().
                    Select(p => p.Name).ToArray();
                CollectionAssert.AreEquivalent(new[] { "A", "B", "CustomProperty1", "CustomProperty2" }, props);
            }
            finally {
                // Ensure we remove the providers we attached.
                TypeDescriptor.RemoveProvider(associatedMetadataProvider, typeof(Base));
                TypeDescriptor.RemoveProvider(testProvider, typeof(Base));
            }

            // Add providers in reverse order
            try {
                testProvider = new TestTypeDescriptionProvider(typeof(Base));
                TypeDescriptor.AddProvider(testProvider, typeof(Base));
                associatedMetadataProvider = new AssociatedMetadataTypeTypeDescriptionProvider(typeof(Base));
                TypeDescriptor.AddProvider(associatedMetadataProvider, typeof(Base));

                props = TypeDescriptor.GetProperties(typeof(Base)).Cast<PropertyDescriptor>().
                    Select(p => p.Name).ToArray();
                CollectionAssert.AreEquivalent(new[] { "A", "B", "CustomProperty1", "CustomProperty2" }, props);
            }
            finally {
                // Ensure we remove the providers we attached.
                TypeDescriptor.RemoveProvider(associatedMetadataProvider, typeof(Base));
                TypeDescriptor.RemoveProvider(testProvider, typeof(Base));
            }
        }