Beispiel #1
0
 public WPFPropFactory
 (
     IProvideDelegateCaches delegateCacheProvider,
     IConvertValues valueConverter,
     ResolveTypeDelegate typeResolver
 )
     : base(delegateCacheProvider, valueConverter, typeResolver)
 {
 }
        static PropStoreServicesForThisApp()
        {
            _mct.Measure("Begin PropStoreServicesForThisApp");

            //Person p = new Person();
            //    _mct.MeasureAndReport("New Person");

            // Build the PropFactory Provider and the two Delegate Caches on which it depends.

            ITypeDescBasedTConverterCache typeDescBasedTConverterCache = new TypeDescBasedTConverterCache();

            _mct.MeasureAndReport("After new TypeDescBasedTConverterCache");

            IProvideDelegateCaches delegateCacheProvider = new SimpleDelegateCacheProvider(typeof(PropBag), typeof(APFGenericMethodTemplates));

            _mct.MeasureAndReport("After new SimpleDelegateCacheProvider");

            IConvertValues      valueConverter = new PropFactoryValueConverter(typeDescBasedTConverterCache);
            ResolveTypeDelegate typeResolver   = null;

            _propFactoryFactory = BuildThePropFactoryFactory(valueConverter, delegateCacheProvider, typeResolver);

            // Build the AppDomain-Wide Property Store and the EventHandler (Delegate) Dispatch cache on which it depends.
            HandlerDispatchDelegateCacheProvider = new SimpleHandlerDispatchDelegateCacheProvider();
            _mct.MeasureAndReport("After new SimpleHandlerDispatchDelegateCacheProvider");

            // This creates the global, shared, Property Store.
            _theStore = new SimplePropStoreProxy(MAX_NUMBER_OF_PROPERTIES, HandlerDispatchDelegateCacheProvider);

            // Get a reference to the PropStoreAccessService Factory that the PropertyStore provides.
            PSAccessServiceCreatorInterface psAccessServiceFactory = _theStore.PropStoreAccessServiceFactory;

            _vmActivator = new SimpleViewModelActivator();
            _mct.MeasureAndReport("After new SimpleViewModelActivator");


            IPropModelBuilder propModelBuilder = GetPropModelProvider(_propFactoryFactory);

            PropModelCache = new SimplePropModelCache(propModelBuilder);

            WrapperTypeCreator = BuildSimpleWrapperTypeCreator();
            _mct.MeasureAndReport("After GetSimpleWrapperTypeCreator");


            ViewModelFactory = new SimpleViewModelFactory(PropModelCache, _vmActivator, psAccessServiceFactory, null, WrapperTypeCreator);
            _mct.MeasureAndReport("After new ViewModelHelper");

            AutoMapperService = GetAutoMapperProvider(ViewModelFactory);
            _mct.MeasureAndReport("After GetAutoMapperProvider");

            ViewModelFactory.AutoMapperService = AutoMapperService;


            //_defaultPropFactory = BuildDefaultPropFactory(valueConverter, delegateCacheProvider, typeResolver);
            //_mct.MeasureAndReport("After new BuildDefaultPropFactory");
        }
Beispiel #3
0
 public TeamSchema(ResolveTypeDelegate resolveTypeDelegate)
 {
     _resolveTypeDelegate = resolveTypeDelegate;
     _requestHandler      = RequestHandler
                            .New()
                            .WithQuery <TeamsQuery>()
                            .WithDependencyInjector(this)
                            .WithoutValidation()
                            .Generate();
 }
        private static IPropFactory BuildDefaultPropFactory(PSServiceSingletonProviderInterface propStoreServices, IProvideAutoMappers autoMapperProvider)
        {
            IConvertValues      valueConverter = new PropFactoryValueConverter(propStoreServices.TypeDescBasedTConverterCache);
            ResolveTypeDelegate typeResolver   = null;
            IPropFactory        result         = new WPFPropFactory
                                                     (delegateCacheProvider: propStoreServices.DelegateCacheProvider,
                                                     valueConverter: valueConverter,
                                                     typeResolver: typeResolver,
                                                     autoMapperProvider: autoMapperProvider);

            return(result);
        }
Beispiel #5
0
        public virtual int CreateScalarPropCacheCount => DelegateCacheProvider.CreateScalarPropCache.Count; //abstract int CreatePropFromStringCacheCount { get; }

        #endregion

        #region Constructor

        public AbstractPropFactory
        (
            IProvideDelegateCaches delegateCacheProvider,
            IConvertValues valueConverter,
            ResolveTypeDelegate typeResolver)
        {
            DelegateCacheProvider = delegateCacheProvider ?? throw new ArgumentNullException(nameof(delegateCacheProvider));
            ValueConverter        = valueConverter ?? throw new ArgumentNullException(nameof(valueConverter));

            TypeResolver = typeResolver ?? new SimpleTypeResolver().GetTypeFromName;

            IndexerName = "Item[]";
        }
Beispiel #6
0
        private IPropFactoryFactory GetThePropFactoryFactory()
        {
            ITypeDescBasedTConverterCache typeDescBasedTConverterCache = new TypeDescBasedTConverterCache();

            IProvideDelegateCaches delegateCacheProvider = new SimpleDelegateCacheProvider(typeof(PropBag), typeof(APFGenericMethodTemplates));


            IConvertValues      valueConverter = new PropFactoryValueConverter(typeDescBasedTConverterCache);
            ResolveTypeDelegate typeResolver   = null;

            IPropFactoryFactory result = BuildThePropFactoryFactory(valueConverter, delegateCacheProvider, typeResolver);

            return(result);
        }
        private static IPropFactoryFactory BuildThePropFactoryFactory
        (
            IConvertValues valueConverter,
            IProvideDelegateCaches delegateCacheProvider,
            ResolveTypeDelegate typeResolver
        )
        {
            IPropFactoryFactory result = new SimplePropFactoryFactory
                                         (
                delegateCacheProvider,
                valueConverter,
                typeResolver: typeResolver
                                         );

            return(result);
        }
Beispiel #8
0
        private IPropFactory BuildDefaultPropFactory
        (
            IConvertValues valueConverter,
            IProvideDelegateCaches delegateCacheProvider,
            ResolveTypeDelegate typeResolver
        )
        {
            IPropFactory result = new WPFPropFactory
                                  (
                delegateCacheProvider: delegateCacheProvider,
                valueConverter: valueConverter,
                typeResolver: typeResolver
                                  );

            return(result);
        }
Beispiel #9
0
 public PropExtStoreFactory
 (
     IProvideDelegateCaches delegateCacheProvider,
     IConvertValues valueConverter,
     ResolveTypeDelegate typeResolver,
     object stuff
 )
     : base
     (
         delegateCacheProvider,
         valueConverter,
         typeResolver
     )
 {
     // Info to help us set up the getters and setters
     Stuff = stuff;
 }
Beispiel #10
0
 public static void SetResolveType(ResolveTypeDelegate handler)
 {
     ResolveClientType = handler;
 }
 public RequestHandlerBuilder WithDependencyInjector(ResolveTypeDelegate resolveTypeDelegate)
 {
     _resolveTypeDelegate = resolveTypeDelegate;
     return(this);
 }
Beispiel #12
0
 /// <summary>
 /// Sets the resolve type handler used to override default values returned by stubs.
 /// </summary>
 /// <param name="resolveTypeHandler">The resolve type handler.</param>
 public void SetResolveTypeHandler(ResolveTypeDelegate resolveTypeHandler)
 {
     _resolveTypeDelegate = resolveTypeHandler;
 }
 public SimplePropFactoryFactory(IProvideDelegateCaches delegateCacheProvider, IConvertValues valueConverter, ResolveTypeDelegate typeResolver)
 {
     _delegateCacheProvider = delegateCacheProvider;
     _valueConverter        = valueConverter;
     _typeResolver          = typeResolver;
 }
Beispiel #14
0
        protected override Action EstablishContext()
        {
            _mct = new MemConsumptionTracker
                   (
                "PSMT",
                "Starting MemTracker for PropStoreServices, AutoMapperSupport and related.",
                TrackMemConsumptionUsedToEstablishContext
                   );

            // Build the PropFactory Provider and the two Delegate Caches on which it depends.
            ITypeDescBasedTConverterCache typeDescBasedTConverterCache = new TypeDescBasedTConverterCache();

            _mct.MeasureAndReport("After new TypeDescBasedTConverterCache");

            IProvideDelegateCaches delegateCacheProvider = new SimpleDelegateCacheProvider(typeof(PropBag), typeof(APFGenericMethodTemplates));

            _mct.MeasureAndReport("After new SimpleDelegateCacheProvider");

            IConvertValues      valueConverter = new PropFactoryValueConverter(typeDescBasedTConverterCache);
            ResolveTypeDelegate typeResolver   = null;

            // The Factory used to build PropFactories.
            IPropFactoryFactory propFactoryFactory = BuildThePropFactoryFactory
                                                     (
                valueConverter,
                delegateCacheProvider,
                typeResolver
                                                     );

            // Build the Property Store and the EventHandler (Delegate) Dispatch cache on which it depends.
            // This Property Store is a regular property of this class and not a (static) AppDomain-wide singleton.

            IProvideHandlerDispatchDelegateCaches handlerDispatchDelegateCacheProvider = new SimpleHandlerDispatchDelegateCacheProvider();

            _mct.MeasureAndReport("After new SimpleHandlerDispatchDelegateCacheProvider");

            // Property Store
            _theStore = new SimplePropStoreProxy(MaxPropsPerObject, handlerDispatchDelegateCacheProvider);
            propModelBuilder
            // PropStoreAccessService Factory.
                PropStoreAccessService_Factory = _theStore.PropStoreAccessServiceFactory;

            // ViewModelActivator.
            ViewModelActivatorInterface vmActivator = new SimpleViewModelActivator();

            _mct.MeasureAndReport("After new SimpleViewModelActivator");

            WrapperTypeCreator = BuildSimpleWrapperTypeCreator();
            _mct.MeasureAndReport("After GetSimpleWrapperTypeCreator");


            // PropModel Provider
            RemotePropModelBuilder remotePropModelProvider = GetPropModelProvider(propFactoryFactory /*, ConfigPackageNameSuffix*/);

            //PropModelBuilder = remotePropModelProvider;
            _mct.MeasureAndReport("After GetPropModelProvider");

            // Load the PropBag and Mapper Templates
            LoadPropModelsAndMappers(remotePropModelProvider, ResourceFolderPath, PBTemplateFilenames, MapperRequestFilenames);
            _mct.MeasureAndReport("After LoadPropModelsAndMappers");

            PropModelCache = new SimplePropModelCache(remotePropModelProvider);

            // Create the ViewModelFactory
            ViewModelFactory = new SimpleViewModelFactory(PropModelCache, vmActivator, PropStoreAccessService_Factory, null, WrapperTypeCreator);
            _mct.MeasureAndReport("After new ViewModelFactory");

            // AutoMapper Services
            PropBagMapperService = GetAutoMapperProvider(ViewModelFactory);
            _mct.MeasureAndReport("After GetAutoMapperProvider");

            ViewModelFactory.AutoMapperService = PropBagMapperService;

            //// Default PropFactory
            //DefaultPropFactory = BuildDefaultPropFactory
            //    (
            //    valueConverter,
            //    delegateCacheProvider,
            //    typeResolver
            //    );

            //_mct.MeasureAndReport("After BuildDefaultPropFactory");

            return(OurCleanupRoutine);

            void OurCleanupRoutine()
            {
                _mct.CompactMeasureAndReport("Before Context Cleanup");

                // Wrapper Type Creator
                if (WrapperTypeCreator is IDisposable disable1)
                {
                    disable1.Dispose();
                }

                // AutoMapper Provider
                if (PropBagMapperService is IDisposable disable2)
                {
                    disable2.Dispose();
                }
                PropBagMapperService = null;

                // PropModel Provider
                if (PropModelCache is IDisposable disable3)
                {
                    disable3.Dispose();
                }
                PropModelCache = null;

                // ViewModel Helper
                //if (ViewModelHelper is IDisposable disable4)
                //{
                //    disable4.Dispose();
                //}
                //ViewModelHelper = null;

                // The Property Store
                _theStore.Dispose();

                // Type Converter Cache
                if (typeDescBasedTConverterCache is IDisposable disable5)
                {
                    disable5.Dispose();
                }

                // Delegate Cache Provider
                if (delegateCacheProvider is IDisposable disable6)
                {
                    disable6.Dispose();
                }

                // Event Handler Dispatcher Delegate Cache Provider
                if (handlerDispatchDelegateCacheProvider is IDisposable disable7)
                {
                    disable7.Dispose();
                }

                // PropModel Provider
                if (remotePropModelProvider is IDisposable disable8)
                {
                    disable8.Dispose();
                }

                propFactoryFactory = null;
                //DefaultPropFactory = null;

                _mct.CompactMeasureAndReport("After Context Cleanup");
            }
        }