Avalonia如何与通用主机Host集成实现MsDI

news/2024/11/18 5:45:41/文章来源:https://www.cnblogs.com/chenxigg/p/18436174
如果想在Aavalonia使用IOC,目前我能想到的就是使用Prism或者是MsDI,Prism内部使用的是DryIoc,这个和WPF几乎没什么差别,那如果我想使用微软实现的Ioc呢,也是可以的,实现方式其实很简单,就是使用IHost,其中依赖有两个库

Microsoft.Extensions.DependencyInjection
Microsoft.Extensions.Hosting

 

现在我门来该造App里面的代码

 

 1 public partial class App : Application
 2 {
 3     private static IHost? host;
 4     private IHost CreateHost()
 5         => Host.CreateDefaultBuilder(Environment.GetCommandLineArgs())
 6         .ConfigureServices(RegisterService)
 7         .Build();
 8     public override void Initialize()
 9     {
10         AvaloniaXamlLoader.Load(this);
11     }
12     public override void OnFrameworkInitializationCompleted()
13     {
14         host = CreateHost();
15         if (ApplicationLifetime is IClassicDesktopStyleApplicationLifetime desktop)
16         {
17             desktop.MainWindow = GetService<MainWindow>();
18         }
19         base.OnFrameworkInitializationCompleted();
20         _ = host.StartAsync();
21     }
22     public static T? GetService<T>()
23     {
24         if (host is null) return default;
25         return host.Services.GetService<T>();
26     }
27     protected virtual void RegisterService(IServiceCollection services)
28     {
29         services.AddSingleton<MainWindow>();
30         services.AddSingleton<MainWindowViewModel>();
31     }
32 }
View Code

这样就可以使用微软的DI服务了

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/804711.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

软工第一次结对作业

这个作业属于哪个课程 https://edu.cnblogs.com/campus/fzu/SE2024这个作业要求在哪里 https://edu.cnblogs.com/campus/fzu/SE2024/homework/13261这个作业的目标 学习使用原型软件,辅助完成软件工程的前期任务学号 102201137结对成员学号 102201137 102201237原型链接 https…

C#爬取动态网页上的信息:B站主页

目录简介获取 HTML 文档解析 HTML 文档测试参考文章 简介 动态内容网站使用 JavaScript 脚本动态检索和渲染数据,爬取信息时需要模拟浏览器行为,否则获取到的源码基本是空的。爬取步骤如下:使用 Selenium 获取渲染后的 HTML 文档 使用 HtmlAgilityPack 解析 HTML 文档新建项…

基于 LangChain 的自动化测试用例的生成与执行

在前面的章节中,分别介绍了 Web、App、接口自动化测试用例的生成。但是在前文中实现的效果均为在控制台打印自动化测试的用例。用例需要手动粘贴,调整之后再执行。 那么其实这个手动粘贴、执行的过程,也是可以直接通过人工智能完成的。 应用价值通过人工智能代替人工操作的部…

数字孪生赋能BMS:开启电池管理新纪元

这几天,全世界的媒体几乎都在报道黎巴嫩爆炸案。原本此类地缘冲突的影响力是较为有限的,但是这次的事件不太一样:这次爆炸的,是几千个传呼机。这一事件迅速引发了全球范围内对于电子设备安全性的广泛关注:随着社会日益依赖各种高科技产品,从日常通信到交通出行,人们开始…

20240927

Fun is Counting 我们可以发现数组 \(a\) 必须是 \(x\) 或 \(x - 1\),然后分类讨论即可 #include <bits/stdc++.h>using namespace std;#define int long longconst int N = 1e6 + 5, mod = 998244353;int inv[N], f[N], g[N], t, n, a[N];int C(int a, int b) {if (a &l…

海报作业

海报主题:知识的力量设定: 目标:强调教育和知识对个人成长和社会发展的重要性 设计构思:1. 色彩:选择明亮且有活力的颜色,如蓝色和黄色,吸引眼球并传达积极的情绪。图像: 中心可以用一棵大树象征知识之树,树冠由书籍组成。 在树下,可以画出一群不同年龄和背景的人在学…

驱动导致win蓝屏(蓝屏code: 0x9f)

描述:在9月27日12点35分24秒系统发生蓝屏通过系统事件日志来看发现发现从发生蓝屏开始到下一次开机之间相隔4分钟左右 继续分析dump日志,此次蓝屏代码为0x9f通过dump日志来看,造成此次蓝屏的原因是驱动程序处于不一致或无效的电源状态。 In Windows Vista and later version…

wireshark抓不到TLS1.3数据包中证书的解决方案

近日工作中遇到需要分析使用TLS1.3协议进行通信的数据包的情况,但使用wireshark进行分析发现不能抓到服务端证书,感到诧异遂设法解决 这篇博客给出解决方案,和简单的原理分析近日工作中遇到需要分析使用TLS1.3协议进行通信的数据包的情况,但使用wireshark进行分析发现不能抓…

chrome实现点击书签, 新页面打开. (左键点击). 新标签打开书签 .

1. 我找了很多插件, 都没法实现点击书签, 自动新标签打开. 2. 但是我发现一款 chrome , 是可以实现的 https://www.ghxi.com/chrome.html 这是基于 chrome ++ 的增强版. 便携版和安装版使用起来没有任何区别 , 甚至重装系统依旧能用原来的数据. 如何开启新标签打开书签的功能, …

GB28181接入摄像头到LiveGBS流媒体平台时,内网ip和外网ip怎么设置才能正确接收到摄像头视频

@目录1、流媒体服务配置2、播放提示none rtp data receive3、多网卡服务器4、收流端口配置5、端口区间可以如何配置6、搭建GB28181视频直播平台 1、流媒体服务配置LiveGBS中基础配置-》流媒体服务配置中有,本地|内网 IP、外网 IP(可选)、外网IP收流勾选,如何配合使用,如何理…

springcloud整合gateway

gateway作为第二代springcloud网关,是微服务架构中不可缺少的一部分,接下去就简单介绍下如何在springcloud中整合它 此处配合用到了nacos,将gateway服务注册到nacos统一管理 一、添加依赖:<dependency><groupId>org.springframework.cloud</groupId><…