protected override void OnStart(IServiceContainer container)
        {
            PathParser           pathParser           = new PathParser();
            ExpressionPathFinder expressionPathFinder = new ExpressionPathFinder();
            ConverterRegistry    converterRegistry    = new ConverterRegistry();

            ObjectSourceProxyFactory objectSourceProxyFactory = new ObjectSourceProxyFactory();

            objectSourceProxyFactory.Register(new UniversalNodeProxyFactory(), 0);

            SourceProxyFactory sourceFactory = new SourceProxyFactory();

            sourceFactory.Register(new LiteralSourceProxyFactory(), 0);
            sourceFactory.Register(new ExpressionSourceProxyFactory(sourceFactory, expressionPathFinder), 1);
            sourceFactory.Register(objectSourceProxyFactory, 2);

            TargetProxyFactory targetFactory = new TargetProxyFactory();

            targetFactory.Register(new UniversalTargetProxyFactory(), 0);
            targetFactory.Register(new UnityTargetProxyFactory(), 10);
#if FAIRY_GUI
            targetFactory.Register(new FairyTargetProxyFactory(), 20);
#endif
#if UNITY_2019_3_OR_NEWER
            targetFactory.Register(new VisualElementProxyFactory(), 30);
#endif

            BindingFactory bindingFactory = new BindingFactory(sourceFactory, targetFactory);
            StandardBinder binder         = new StandardBinder(bindingFactory);

            container.Register <IBinder>(binder);
            container.Register <IBindingFactory>(bindingFactory);
            container.Register <IConverterRegistry>(converterRegistry);

            container.Register <IExpressionPathFinder>(expressionPathFinder);
            container.Register <IPathParser>(pathParser);

            container.Register <INodeProxyFactory>(objectSourceProxyFactory);
            container.Register <INodeProxyFactoryRegister>(objectSourceProxyFactory);

            container.Register <ISourceProxyFactory>(sourceFactory);
            container.Register <ISourceProxyFactoryRegistry>(sourceFactory);

            container.Register <ITargetProxyFactory>(targetFactory);
            container.Register <ITargetProxyFactoryRegister>(targetFactory);
        }
        protected void OnStart(IQFrameworkContainer container)
        {
            PathParser           pathParser           = new PathParser();
            ExpressionPathFinder expressionPathFinder = new ExpressionPathFinder();
            ConverterRegistry    converterRegistry    = new ConverterRegistry();

            ObjectSourceProxyFactory objectSourceProxyFactory = new ObjectSourceProxyFactory();

            objectSourceProxyFactory.Register(new UniversalNodeProxyFactory(), 0);

            SourceProxyFactory sourceFactory = new SourceProxyFactory();

            sourceFactory.Register(new LiteralSourceProxyFactory(), 0);
            sourceFactory.Register(new ExpressionSourceProxyFactory(sourceFactory, expressionPathFinder), 1);
            sourceFactory.Register(objectSourceProxyFactory, 2);

            TargetProxyFactory targetFactory = new TargetProxyFactory();

            targetFactory.Register(new UniversalTargetProxyFactory(), 0);
            targetFactory.Register(new UnityTargetProxyFactory(), 10);

            BindingFactory bindingFactory = new BindingFactory(sourceFactory, targetFactory);
            StandardBinder binder         = new StandardBinder(bindingFactory);

            container.RegisterInstance <IBinder>(binder);
            container.RegisterInstance <IBindingFactory>(bindingFactory);
            container.RegisterInstance <IConverterRegistry>(converterRegistry);

            container.RegisterInstance <IExpressionPathFinder>(expressionPathFinder);
            container.RegisterInstance <IPathParser>(pathParser);

            container.RegisterInstance <INodeProxyFactory>(objectSourceProxyFactory);
            container.RegisterInstance <INodeProxyFactoryRegister>(objectSourceProxyFactory);

            container.RegisterInstance <ISourceProxyFactory>(sourceFactory);
            container.RegisterInstance <ISourceProxyFactoryRegistry>(sourceFactory);

            container.RegisterInstance <ITargetProxyFactory>(targetFactory);
            container.RegisterInstance <ITargetProxyFactoryRegister>(targetFactory);
        }