Exemplo n.º 1
0
        private void GetSearchStocks()
        {
            var stockSpiderService = DIContainerHelper.Resolve <IStockSpiderService>();
            var stocks             = stockSpiderService.GetSearchStocks("中信");

            MessageBox.Show($"获取公司信息成功:\n总数:{stocks.Count}\n{string.Join("\n", stocks.Select(s => s.Name))}");
        }
Exemplo n.º 2
0
 /// <summary>
 /// 使用持久化ID创建实例
 /// </summary>
 /// <param name="persist"></param>
 /// <returns></returns>
 private DockFormBase GetDockContent(string persist)
 {
     try
     {
         string[] persists = persist.Split(new[] { '@' }, 2);
         Type     type     = this.GetType().Assembly.GetType(persists[0]);
         if (!(DIContainerHelper.Resolve(type) is DockFormBase dockForm))
         {
             return(default);
Exemplo n.º 3
0
        private static void Main()
        {
            LogHelper <Application> .Debug("程序启动 ...");

#if !DEBUG
            AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException;
            Application.ThreadException += Application_ThreadException;
#endif
            Application.ApplicationExit += Application_ApplicationExit;

            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);

            DialogResult launchResult = DialogResult.None;
            LogHelper <Application> .Debug("创建启动窗口 ...");

            using (var launcher = new LaunchForm())
            {
                LogHelper <Application> .Debug("显示启动窗口 ...");

                launchResult = launcher.ShowDialog();
                LogHelper <Application> .Debug($"启动窗口返回:{launchResult.ToString()}");
            }

            switch (launchResult)
            {
            case DialogResult.None:
            case DialogResult.OK:
            case DialogResult.Ignore:
            case DialogResult.Yes:
            {
                Form mainForm = DIContainerHelper.Resolve <MainForm>();

                LogHelper <Application> .Debug("运行主窗口 ...");

                Application.Run(mainForm);

                break;
            }

            case DialogResult.Cancel:
            case DialogResult.Abort:
            case DialogResult.Retry:
            case DialogResult.No:
            {
                LogHelper <Application> .Debug("关闭应用程序 ...");

                Environment.Exit(-1);

                break;
            }

            default:
                break;
            }
        }
Exemplo n.º 4
0
        /// <summary>
        /// 启动应用程序
        /// </summary>
        private async Task LaunchApplication()
        => await Task.WhenAll(
            Task.Delay(1000),
            Task.Factory.StartNew(() =>
        {
            this.UpdateProgressAsync("开始初始化 AutoMap ...");
            this.InitAutoMap();

            this.UpdateProgressAsync("开始注册服务到依赖注入容器 ...");
            DIContainerHelper.RegistServicesFromConfig();

            this.UpdateProgressAsync("创建主窗口 ...");
            MainForm mainForm = (MainForm)this.Invoke(new Func <MainForm>(() => new MainForm()));
            DIContainerHelper.RegisteInstanceAsType <MainForm, MainForm>(mainForm);
            foreach (var message in mainForm.Initialize())
            {
                this.UpdateProgressAsync(message);
            }

            this.UpdateProgressAsync("注册自选股票窗口 ...");
            this.RegisterSingleToolDockFormInstance <SelfSelectStockForm>(mainForm);

            this.UpdateProgressAsync("注册热门股票窗口 ...");
            this.RegisterSingleToolDockFormInstance <HotStockDockForm>(mainForm);

            this.UpdateProgressAsync("注册搜索股票窗口 ...");
            this.RegisterSingleToolDockFormInstance <SearchStockDockForm>(mainForm);

            this.UpdateProgressAsync("注册图表文档窗口 ...");
            this.RegisterDocumentDockForm <ChartDocumentForm>();

            this.UpdateProgressAsync("注册最近行情窗口 ...");
            this.RegisterDocumentDockForm <RecentQuotaDocumentForm>();

            this.UpdateProgressAsync("注册行情仓库窗口 ...");
            this.RegisterDocumentDockForm <QuotaRepositoryDocumentForm>();

            this.UpdateProgressAsync("注册实时行情窗口 ...");
            this.RegisterSingleToolDockFormInstance <CurrentQuotaForm>(mainForm);

            this.UpdateProgressAsync("注册大盘指数窗口 ...");
            this.RegisterSingleToolDockFormInstance <MarketQuotaForm>(mainForm);

            this.UpdateProgressAsync("注册公司信息窗口 ...");
            this.RegisterSingleToolDockFormInstance <CompanyInfoForm>(mainForm);

            this.UpdateProgressAsync("注册最近交易窗口 ...");
            this.RegisterSingleToolDockFormInstance <RecentTradeForm>(mainForm);

            this.UpdateProgressAsync($"密封服务容器 ...");
            DIContainerHelper.Build();

            this.UpdateProgressAsync($"绑定 MQ 发布者 ...");
            MQHelper.BindPublisher();
        }));
Exemplo n.º 5
0
        private void SearchToolButton_Click(object sender, EventArgs e)
        {
            SearchStockDockForm dockForm = DIContainerHelper.Resolve <SearchStockDockForm>();

            if (dockForm == null)
            {
                return;
            }

            dockForm.Show(this.MainDockPanel);
        }
        public static void MyClassInitialize(TestContext testContext)
        {
            _container = DIContainerHelper.Setup(out _context);
            _context.ClearDb(DatabaseName);

            //create test directory, which simulates the desktop folder
            if (!Directory.Exists(DesktopTestDirectory))
            {
                Directory.CreateDirectory(DesktopTestDirectory);
            }
        }
        /// <summary>
        /// Initializes a new instance of the <see cref="PersistServiceBase{TEntity}"/> class.
        /// </summary>
        public PersistServiceBase()
        {
            this.Context = DIContainerHelper.Resolve <DBContext>();
            if (this.Context == null)
            {
                throw new InvalidOperationException("数据持久化服务初始化数据库连接失败。");
            }

            this.Database = this.Context.Database;

            LogHelper <DefaultLogSource> .Debug($"构造数据持久化服务:{this.GetType().FullName} ({this.GetHashCode().ToString("X")})");
        }
Exemplo n.º 8
0
        private static void Main(string[] args)
        {
            Console.WriteLine("Hello there!");
            Console.WriteLine("Help \n  - To Exit type 'exit' \n\n");
            var container = new UnityContainer();

            DIContainerHelper.RegisterComponents <HierarchicalLifetimeManager>(container);
            var messageService = container.Resolve <IMessageService>();

            messageService.CreateQueue();
            GetUserInput(messageService);
        }
Exemplo n.º 9
0
        private void GetRecentQuotas()
        {
            var stockSpiderService = DIContainerHelper.Resolve <IStockSpiderService>();
            var quotas             = stockSpiderService.GetRecentQuotas("600086", Markets.ShangHai, TimeScales.Minutes_5, 48);

            if (quotas == null ||
                quotas.Count == 0)
            {
                MessageBox.Show($"获取最近行情为空!");
                return;
            }

            MessageBox.Show($"获取最近行情成功:\n行情数量:{quotas.Count}\n最新时间:{quotas.LastOrDefault()?.UpdateTime}\n最早时间:{quotas.FirstOrDefault()?.UpdateTime}");
        }
Exemplo n.º 10
0
        private void GetRecentTrades()
        {
            var stockSpiderService = DIContainerHelper.Resolve <IStockSpiderService>();
            var trades             = stockSpiderService.GetRecentTrades("600086", Markets.ShangHai, TradeListTypes.Block, 10);

            if (trades == null ||
                trades.Count == 0)
            {
                MessageBox.Show($"获取最近交易为空!");
                return;
            }

            MessageBox.Show($"获取最近交易成功:\n交易数量:{trades.Count}\n最新时间:{trades.LastOrDefault()?.UpdateTime}\n最早时间:{trades.FirstOrDefault()?.UpdateTime}");
        }
Exemplo n.º 11
0
        private static void Main(string[] args)
        {
            Console.WriteLine("Hello there!");
            Console.WriteLine("Waiting for messages ... ");

            var container = new UnityContainer();

            DIContainerHelper.RegisterComponents <HierarchicalLifetimeManager>(container);

            var messageService = container.Resolve <IMessageService>();

            messageService.CreateQueue();
            messageService.CreateConsumer();
            messageService.Listen();
        }
Exemplo n.º 12
0
        private void GetCompany()
        {
            var stockSpiderService = DIContainerHelper.Resolve <IStockSpiderService>();
            var company            = stockSpiderService.GetCompany("600086", Markets.ShangHai);

            if (company == null)
            {
                MessageBox.Show($"获取公司信息为空!");
                return;
            }

            DIContainerHelper.Resolve <ICompanyService>().AddOrUpdate(company);

            MessageBox.Show($"获取公司信息成功:\n公司名称:{company.Position} - {company.Name}");
        }
Exemplo n.º 13
0
        /// <summary>
        /// 点击显示对应的窗口
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void ViewsMenuItem_Click(object sender, EventArgs e)
        {
            Type viewType = (sender as ToolStripItem)?.Tag as Type;

            if (!(DIContainerHelper.Resolve(viewType) is DockFormBase dockForm))
            {
                throw new NullReferenceException();
            }

            if (dockForm.IsHidden ||
                !dockForm.Visible)
            {
                dockForm.Show(this.MainDockPanel);
            }
            else
            {
                dockForm.Activate();
            }
        }
Exemplo n.º 14
0
        private void GetChart()
        {
            var stockSpiderService = DIContainerHelper.Resolve <IStockSpiderService>();
            var image = stockSpiderService.GetChart("600086", Markets.ShangHai, Charts.Minute);

            if (image == null)
            {
                MessageBox.Show($"获取股票图表为空!");
                return;
            }

            DockFormBase form = new DocumentDockForm()
            {
                Size                  = image.Size,
                BackgroundImage       = image,
                BackgroundImageLayout = ImageLayout.Center,
            };

            form.Show(this.MainDockPanel);
        }
Exemplo n.º 15
0
        /// <summary>
        /// 注册单实例停靠窗口实例
        /// </summary>
        /// <typeparam name="TDockForm">停靠窗口类型</typeparam>
        /// <param name="mainForm"></param>
        private void RegisterSingleToolDockFormInstance <TDockForm>(MainForm mainForm)
            where TDockForm : SingleToolDockForm
        {
            TDockForm instance = null;

            this.Invoke(new Action(() =>
            {
                instance = Activator.CreateInstance <TDockForm>();

                mainForm.RegisterDockFormToViewMenu <TDockForm>(
                    instance.Text,
                    Bitmap.FromHicon(instance.Icon.Handle));
            }));

            DIContainerHelper.RegisteInstanceAsType <TDockForm, TDockForm>(instance);

            foreach (var message in instance.Initialize())
            {
                this.UpdateProgressAsync(message);
            }
        }
Exemplo n.º 16
0
        /// <summary>
        /// 预设布局
        /// </summary>
        private void PredeterminedLayout()
        {
            var recentTradeForm = DIContainerHelper.Resolve <RecentTradeForm>();

            recentTradeForm.Show(this.MainDockPanel);
            var currentQuotaForm = DIContainerHelper.Resolve <CurrentQuotaForm>();

            currentQuotaForm.Show(recentTradeForm.Pane, recentTradeForm);

            var marketQuotaForm = DIContainerHelper.Resolve <MarketQuotaForm>();

            marketQuotaForm.Show(recentTradeForm.Pane, DockAlignment.Bottom, 0.3);

            var searchStockForm = DIContainerHelper.Resolve <SearchStockDockForm>();

            searchStockForm.Show(this.MainDockPanel);
            var hotStockForm = DIContainerHelper.Resolve <HotStockDockForm>();

            hotStockForm.Show(searchStockForm.Pane, DockAlignment.Top, 0.56);
            var selfSelectForm = DIContainerHelper.Resolve <SelfSelectStockForm>();

            selfSelectForm.Show(hotStockForm.Pane, hotStockForm);
        }
Exemplo n.º 17
0
 /// <summary>
 /// 注册文档停靠窗口
 /// </summary>
 /// <typeparam name="TDockForm">停靠窗口类型</typeparam>
 private void RegisterDocumentDockForm <TDockForm>()
     where TDockForm : DocumentDockForm
 {
     DIContainerHelper.RegisteTypeAsType <TDockForm, TDockForm>();
 }
Exemplo n.º 18
0
 /// <summary>
 /// 注册工具停靠窗口
 /// </summary>
 /// <typeparam name="TDockForm">停靠窗口类型</typeparam>
 private void RegisterToolDockForm <TDockForm>()
     where TDockForm : ToolDockForm
 {
     DIContainerHelper.RegisteTypeAsType <TDockForm, TDockForm>();
 }
Exemplo n.º 19
0
        public static void MyClassInitialize(TestContext testContext)
        {
            _container = DIContainerHelper.Setup(out _context);
            _context.ClearDb(DatabaseName);

            //create test directory, which simulates the desktop folder
            if (!Directory.Exists(DesktopTestDirectory))
            {
                Directory.CreateDirectory(DesktopTestDirectory);
            }

            if (!Directory.Exists(DestinationDirectory))
            {
                Directory.CreateDirectory(DestinationDirectory);
            }

            //create test files on the 'desktop'
            File.Create(Path.Combine(DesktopTestDirectory, "test.txt")).Close();
            File.Create(Path.Combine(DesktopTestDirectory, "test1.zip")).Close();
            File.Create(Path.Combine(DesktopTestDirectory, "test2.zip")).Close();
            File.Create(Path.Combine(DesktopTestDirectory, "test3.xml")).Close();
            File.Create(Path.Combine(DesktopTestDirectory, "test4.xml")).Close();
            File.Create(Path.Combine(DesktopTestDirectory, "test5.xml")).Close();

            //simulates a shortcut on the desktop
            File.Create(Path.Combine(DesktopTestDirectory, "Desktop.lnk")).Close();

            //create test directories
            var dir1Path = Path.Combine(DesktopTestDirectory, "dir1");

            Directory.CreateDirectory(dir1Path);
            File.Create(Path.Combine(dir1Path, "dirTest1.txt")).Close();

            var dir2Path = Path.Combine(DesktopTestDirectory, "dir2");

            Directory.CreateDirectory(dir2Path);
            File.Create(Path.Combine(dir2Path, "dirTest2.txt")).Close();

            var vipDirPath = Path.Combine(DesktopTestDirectory, "VIPdir");

            Directory.CreateDirectory(vipDirPath);
            File.Create(Path.Combine(vipDirPath, "vipText.xml")).Close();

            //configure blacklisted files and directories
            var blacklistedFile1 = new BlackListedFile
            {
                FileName      = "test",
                FileExtension = ".txt"
            };

            var blacklistedFile2 = new BlackListedFile
            {
                FileName      = "*",
                FileExtension = ".zip"
            };

            var blacklistedDir = new BlackListedDirectory
            {
                Name = "VIPdir"
            };

            var databaseService = _container.Resolve <IDatabaseService>();

            databaseService.AddBlacklistedFile(blacklistedFile1);
            databaseService.AddBlacklistedFile(blacklistedFile2);
            databaseService.AddBlacklistedDirectory(blacklistedDir);
        }
Exemplo n.º 20
0
 public static void MyClassInitialize(TestContext testContext)
 {
     _container = DIContainerHelper.Setup(out _context);
     _context.ClearDb(DatabaseName);
 }