private ObservableList <IObjectDescriptorProvider> CreateObjectDescriptorProvider(ObservableList <IObjectDescriptorProvider> descriptorProviders)
        {
            var objectDescriptorProvider  = new ObjectDescriptorProvider(AliasProviders);
            var objectDescriptorProviders = new ObservableList <IObjectDescriptorProvider>
            {
                objectDescriptorProvider,
                new DynamicObjectDescriptor(objectDescriptorProvider),
                new EnumerableObjectDescriptor(objectDescriptorProvider),
                new DictionaryObjectDescriptor(),
                new ReadOnlyGenericDictionaryObjectDescriptorProvider(),
                new GenericDictionaryObjectDescriptorProvider(),
                new ReadOnlyStringDictionaryObjectDescriptorProvider(),
                new StringDictionaryObjectDescriptorProvider(),
            }
            .AddMany(descriptorProviders);

            var observer = new ObserverBuilder <ObservableEvent <IObjectDescriptorProvider> >()
                           .OnEvent <
                AddedObservableEvent <IObjectDescriptorProvider>,
                ObservableList <IObjectDescriptorProvider>
                >(objectDescriptorProviders, (@event, state) => { state.Add(@event.Value); })
                           .Build();

            descriptorProviders.Subscribe(observer);

            return(objectDescriptorProviders);
        }
        private IObjectDescriptorProvider CreateObjectDescriptorProvider()
        {
            var objectDescriptorProvider = new ObjectDescriptorProvider(this);
            var providers = new List <IObjectDescriptorProvider>(UnderlingConfiguration.CompileTimeConfiguration.ObjectDescriptorProviders)
            {
                new StringDictionaryObjectDescriptorProvider(),
                new GenericDictionaryObjectDescriptorProvider(),
                new DictionaryObjectDescriptor(),
                new CollectionObjectDescriptor(objectDescriptorProvider),
                new EnumerableObjectDescriptor(objectDescriptorProvider),
                objectDescriptorProvider,
                new DynamicObjectDescriptor()
            };

            return(new ObjectDescriptorFactory(providers));
        }
        private ObjectDescriptorFactory CreateObjectDescriptorProvider()
        {
            var objectDescriptorProvider = new ObjectDescriptorProvider(AliasProviders);
            var providers = new ObservableList <IObjectDescriptorProvider>(UnderlingConfiguration.ObjectDescriptorProviders)
            {
                new StringDictionaryObjectDescriptorProvider(),
                new ReadOnlyStringDictionaryObjectDescriptorProvider(),
                new GenericDictionaryObjectDescriptorProvider(),
                new ReadOnlyGenericDictionaryObjectDescriptorProvider(),
                new DictionaryObjectDescriptor(),
                new EnumerableObjectDescriptor(objectDescriptorProvider),
                objectDescriptorProvider,
                new DynamicObjectDescriptor()
            };

            return(new ObjectDescriptorFactory(providers));
        }