.Net6 or .Net Core界面程序依赖注入实现Caliburn.Micro
Posted シ゛甜虾
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了.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的
代码下载
一、创建项目
创建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<IWindowManager, WindowManager>();
_container.Singleton<IEventAggregator, EventAggregator>();
_container.Singleton<Log4netLogger>();
//一定要注入进去,否则打不开窗体
_container.Singleton<MainWindowViewModel>();
protected override object GetInstance(Type service, string key)
return _container.GetInstance(service, key);
protected override IEnumerable<object> 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<Log4netLogger>();
logger.Initialize("UnityDataServiceGui");
logger.LogLevel = LoggingEventType.Debug;
//打开窗口方法1
var windowManager = IoC.Get<IWindowManager>();
var mainWindows = IoC.Get<MainWindowViewModel>();
windowManager.ShowWindowAsync(mainWindows);
//打开窗口方法2
//DisplayRootViewFor<MainWindowViewModel>();
catch (Exception ex)
Console.WriteLine(ex);
引入依赖
新建目录、窗体、mode,MainWindowViewModel和MainWindowView的名称是约定俗成
MainWindowViewModel.cs引入Caliburn.Micro
修改App.xmal,必须添加<local:Bootstrapper x:Key="Bootstrapper"/>,作为启动项
<Application x:Class="UnityDataServiceGui.App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:UnityDataServiceGui">
<Application.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary>
<local:Bootstrapper x:Key="Bootstrapper"/>
</ResourceDictionary>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Application.Resources>
</Application>
二、运行项目
三、日志接口注入测试
项目改成控制台应用程序,这样可以看到Console输出
测试代码
namespace UnityDataServiceGui.Modules.Main.ViewModels
public class MainWindowViewModel : Screen
readonly Log4netLogger _logger;
public MainWindowViewModel(Log4netLogger logger)
_logger = logger;
_logger.Warn(typeof(MainWindowViewModel),"这是一个测试程序!");
测试
以上是关于.Net6 or .Net Core界面程序依赖注入实现Caliburn.Micro的主要内容,如果未能解决你的问题,请参考以下文章
.Net or .Net Core依赖注入实现Microsoft.Extensions.DependencyInjection
.NET6-Asp.Net Core webapi -从零开始的webapi项目
.NET6-Asp.Net Core webapi -从零开始的webapi项目
.NET6-Asp.Net Core webapi -从零开始的webapi项目