UnityExt.cs 2.32 KB
Newer Older
潘栩锋's avatar
潘栩锋 committed
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
using FlyADBase;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Unity;

namespace Flyad7_WPF
{
    public class UnityExt
    {

        public static UnityContainer Container;
        static UnityExt()
        {
            Init();
        }
        static void Init()
        {
            Container = new UnityContainer();

            Container.RegisterType<DebugAppParam>(
                new Unity.Lifetime.ContainerControlledLifetimeManager());

            Container.RegisterFactory<FlyAD7>((unity) =>
            {
潘栩锋's avatar
潘栩锋 committed
28 29
                FlyAD7 flyAd = new FlyAD7();
                flyAd.Load();
潘栩锋's avatar
潘栩锋 committed
30 31 32 33 34 35 36 37
                return flyAd;
            }, new Unity.Lifetime.ContainerControlledLifetimeManager());

            Container.RegisterFactory<AutoForwBackw>((unity) =>
            {
                var flyad = Container.Resolve<FlyAD7>();
                AutoForwBackw autofb = new AutoForwBackw(flyad);
                var param = unity.Resolve<DebugAppParam>();
潘栩锋's avatar
潘栩锋 committed
38 39
                Misc.BindingOperations.SetBinding(param, nameof(param.FB_Pos1), autofb, nameof(autofb.FB_Pos1), Misc.BindingOperations.BindingMode.TwoWay);
                Misc.BindingOperations.SetBinding(param, nameof(param.FB_Pos2), autofb, nameof(autofb.FB_Pos2), Misc.BindingOperations.BindingMode.TwoWay);
潘栩锋's avatar
潘栩锋 committed
40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56
                return autofb;
            }, new Unity.Lifetime.ContainerControlledLifetimeManager());

            Container.RegisterType<FlyADClientUI>(
                new Unity.Lifetime.ContainerControlledLifetimeManager());

            Container.RegisterType<AutoGetGridAdv>(
                new Unity.Lifetime.ContainerControlledLifetimeManager());

            Container.RegisterType<AutoSync>(
                new Unity.Lifetime.ContainerControlledLifetimeManager());

            Container.RegisterFactory<GridAdvVm>((unity) =>
            {
                var flyad = Container.Resolve<FlyAD7>();
                GridAdvVm gridAdvVm = new GridAdvVm(flyad);
                var param = unity.Resolve<DebugAppParam>();
潘栩锋's avatar
潘栩锋 committed
57
                Misc.BindingOperations.SetBinding(param, nameof(param.HasGridAdv), gridAdvVm, nameof(gridAdvVm.HasGridAdv), Misc.BindingOperations.BindingMode.TwoWay);
潘栩锋's avatar
潘栩锋 committed
58 59 60 61 62 63
                return gridAdvVm;
            }, new Unity.Lifetime.ContainerControlledLifetimeManager());
        }

    }
}