栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > .Net

.Net6 or .Net Core界面程序依赖注入实现Caliburn.Micro

.Net 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

.Net6 or .Net Core界面程序依赖注入实现Caliburn.Micro

依赖注入的优点

(1)有效地设计服务及其依赖关系。

(2)防止多线程问题。

(3)防止内存泄漏。

(4)防止潜在的错误。

Caliburn.Micro主要用在MVVM, WPF, WinRT, UWP, Xamarin, Android, iOS, CoC, Convention, MVP, PM, Screen, Coroutine, Behavior, Model-View-ViewModel, Presentation, UI, ViewModel, Caliburn就是说控制台应用是用不了Caliburn.Micro的

代码下载

UnityDataServiceGui_20220316-C#文档类资源-CSDN下载UnityDataServiceGui_20220316更多下载资源、学习资料请访问CSDN下载频道.https://download.csdn.net/download/g313105910/84993382

一、创建项目

创建WPF项目,使用.net6

引入Caliburn.Micro

新建Bootstrapper类,内容如下

using Caliburn.Micro;
using FileLogger;
using System;
using System.Collections.Generic;
using UnityDataServiceGui.Modules.Main.ViewModels;

namespace UnityDataServiceGui
{
    public class Bootstrapper : BootstrapperBase
    {
        private SimpleContainer _container;

        public Bootstrapper()
        {
            Initialize();
        }

        protected override void Configure()
        {
            _container = new SimpleContainer();
            _container.Singleton();
            _container.Singleton();
            _container.Singleton();
            //一定要注入进去,否则打不开窗体
            _container.Singleton();

        }
        protected override object GetInstance(Type service, string key)
        {
            return _container.GetInstance(service, key);
        }

        protected override IEnumerable GetAllInstances(Type service)
        {
            return _container.GetAllInstances(service);
        }

        protected override void BuildUp(object instance)
        {
            _container.BuildUp(instance);
        }

        protected override void OnStartup(object sender, System.Windows.StartupEventArgs e)
        {
            try
            { 
                var logger = IoC.Get();
                logger.Initialize("UnityDataServiceGui");
                logger.LogLevel = LoggingEventType.Debug;
                //打开窗口方法1
                var windowManager = IoC.Get();
                var mainWindows = IoC.Get();
                windowManager.ShowWindowAsync(mainWindows);
                //打开窗口方法2
                //DisplayRootViewFor();
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex);
            }
        }
    }
}
 

引入依赖

新建目录、窗体、mode,MainWindowViewModel和MainWindowView的名称是约定俗成

MainWindowViewModel.cs引入Caliburn.Micro

修改App.xmal,必须添加,作为启动项

    
        
            
                
                    
                
            
        
    
二、运行项目 

三、日志接口注入测试

项目改成控制台应用程序,这样可以看到Console输出

测试代码

namespace UnityDataServiceGui.Modules.Main.ViewModels
{
    public class MainWindowViewModel : Screen
    {
        readonly Log4netLogger _logger;
        public MainWindowViewModel(Log4netLogger logger)
        {
            _logger = logger;
            _logger.Warn(typeof(MainWindowViewModel),"这是一个测试程序!");
        }
    }
}

测试

转载请注明:文章转载自 www.mshxw.com
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号