MAUI 入门教程系列(4.通用主机)

前言

对于ASP.NET Core 开发人员而言, 这并不陌生, 当ASP.NET Core应用程序启动时, 会创建默认的应用程序主机, 我们可以为应用程序配置所有的依赖关系、系统设置, 最终启动。
如下所示:

using IHost host = Host.CreateDefaultBuilder(args).ConfigureServices((_, services) =>services.AddHostedService<ExampleHostedService>()).Build();await host.RunAsync();

为了能够让MAUI项目带来统一的微软开发式体验, MAUI同样具备通用应用程序主机构建器。相对比Xamarin.Forms而言, MAUI具备以下优势:

Xamarin.Forms.NET MAUI
不统一配置统一配置
容器不可扩展容器可扩展
扫描程序集加载依赖服务按需配置性能佳

MAUI VS Xamarin.Forms

  • 初始化应用程序
    Xamarin.Forms

Xamarin.Essentials.Platform.Init(this, savedInstanceState);
global::Xamarin.Forms.Forms.Init(this, savedInstanceState);

Xamarin.Forms 内部的初始化都无法扩展

MAUI

protected override MauiApp CreateMauiApp() => MauiProgram.CreateMauiApp();

MAUI可以通过 MauiAppBuilder 进行扩展

  • 服务注册对比
    Xamarin.Forms

[assembly: Xamarin.Forms.Dependency(typeof(LocalService))]
namespace MyApp.Droid
{public class LocalService : ILocalService{public void SetValue(string key, object value){ }}
}

需要在每个平台中单独定义接口实现, 然后添加程序集特性标记对应的目标类型

MAUI

builder.Services.AddScoped<ILocalService, LocalService>();

一行代码解决,轻松高效!

  • 字体导出对比
    Xamarin.Forms

[assembly: ExportFont("iconfont.ttf", Alias = "iconfont")]

同样是通过程序集特性导出对应的字体

MAUI

.ConfigureFonts(fonts =>{fonts.AddFont("iconfont.ttf", "iconfont"); });

通过内置的字体扩展服务添加系统字体。

通用主机调用

对于每个平台而言, 通过统一的方式调用MauiProgram.CreateMauiApp()静态方法, 构建应用程序, 包括所有的字体、服务、处理程序、渲染器、跨平台API扩展等。

Android平台调用
3bc3cf0459930d2efbf48f02505bea23.png

IOS平台调用
fe6a453ce6a39c4a177be54789145539.png

Windows平台调用
e6cc55599ca370950281965d941d2756.png

Tizen平台调用
0baf675d2e48aa645d85dd8062cabb8c.png

MAUI依赖注入调用

91605b1797c626980464ad8cf3d8d1b9.png

总结

这一节, 讲解了MAUI当中的通用应用程序主机构建方式、以及依赖注入的使用方法。包括与Xamarin.Forms的比较使用方法。从下一节开始, 则会主要来介绍MAUI框架的一些内部概念。

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

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

相关文章

【MATLAB统计分析与应用100例】案例012:matlab读取Excel数据,调用robustfit函数作稳健回归

稳健回归效果预览: 文章目录 1. 读取数据2. 调用robustfit函数作稳健回归3 .绘制残差和权重的散点图4. 绘制regress函数和robustfit函数对应的回归直线5. 拟合效果1. 读取数据 ClimateData = xlsread(examp08_01.xls); % 从Excel文件读取数据 x

Android单击、长按获取当前触点坐标下(TextView)文字字符

package com.*.*.*.utils;import android.graphics.Rect; import android.text.Layout; import android.widget.TextView;public class TextViewUtils {/**获取TextView某一个字符的坐标位置return 返回的是相对坐标parms tvparms index 字符索引*/public static Rect getTextV…

后台页制作01《ivx低代码签到系统制作》

制作iVX 低代码项目需要进入在线IDE&#xff1a;https://editor.ivx.cn/ 一、签到系统思考 签到系统一般是指公布一个签到链接或者二维码&#xff0c;随后用户扫码后即可完成签到。 那如何制作呢&#xff1f;首先我们可以先不考虑签到页面的制作&#xff0c;既然签到暂时没有…

个人作业-Week2

第一部分 调研&#xff0c; 评测 运行平台 win 8 软件版本&#xff1a;微软必应词典桌面版 3.5.2 BUG标题&#xff1a;必应背单词无法发音 BUG详细描述&#xff1a;如图&#xff0c;左边为必应词典该单词的搜索&#xff0c;可以发音&#xff0c;而右边必应背单词中该单词的发音…

Blazor WebAssembly + Grpc Web=未来?

Blazor WebAssembly是什么首先来说说WebAssembly是什么&#xff0c;WebAssembly是一个可以使C#,Java,Golang等静态强类型编程语言&#xff0c;运行在浏览器中的标准&#xff0c;浏览器厂商基于此标准实现执行引擎。在实现了WebAssembly标准引擎之后&#xff0c;浏览器中可以执行…

C语言试题五十二之学生的记录由学号和成绩组称个,n名大学生得数据已在主函数中放入结构体数组a中,请编写函数fun,它的功能时:按分数的高低排列学生的记录,高分在前。

📃个人主页:个人主页 🔥系列专栏:C语言试题200例目录 💬推荐一款刷算法、笔试、面经、拿大公司offer神器 👉 点击跳转进入网站 ✅作者简介:大家好,我是码莎拉蒂,CSDN博客专家(全站排名Top 50),阿里云博客专家、51CTO博客专家、华为云享专家 1、题目 请编写一个…

Xtrabackup备份MySQL

一、安装Xtrabackup 1234# wget --no-check-certificate http://www.percona.com/downloads/percona-release/redhat/0.1-4/percona-release-0.1-4.noarch.rpm# rpm -ivh percona-release-0.1-4.noarch.rpm# yum list | grep percona# yum -y install percona-xtrabackup-24二、…

Can't create directory 'E:\Repositories\***\db\transactions\138-41.txn':

遇到这种问题应该是迁移SVN库时丢失了文件夹引起的&#xff0c;直接在服务器上找到对应项目的db文件夹&#xff0c;手动创建“transactions”目录和“txn-protorevs”目录即可正常提交。

[它山之石] 一件事情,假设你不能说清楚,十有八九你就做不好

记得有一次开会。我的头儿说了标题所写的这句话,自己深以为然。 有过较多解决这个问题的经历的人可能会有这种感觉&#xff0c;非常多时候&#xff0c;面对一个问题。我们即使没有全然将之想清 楚。也可以基于已有的经验给出一个可以work的解决方式&#xff0c;当然这样的情况下…

【MATLAB统计分析与应用100例】案例013:matlab读取Excel数据,调用nlinfit函数作一元非线性回归

1. 一元线性回归分析效果预览 2. matlab完整实现代码 %读取数据,绘制散点图** HeadData = xlsread(examp08_02.xls); %从Excel文

C语言试题五十三之将所有大于1小于整数m的非素数存入xx所指的数组中,非素数的个数通过k传回。

📃个人主页:个人主页 🔥系列专栏:C语言试题200例目录 💬推荐一款刷算法、笔试、面经、拿大公司offer神器 👉 点击跳转进入网站 ✅作者简介:大家好,我是码莎拉蒂,CSDN博客专家(全站排名Top 50),阿里云博客专家、51CTO博客专家、华为云享专家 1、题目 请编写一个…

发布功能完成02《ivx低代码签到系统制作》

制作iVX 低代码项目需要进入在线IDE&#xff1a;https://editor.ivx.cn/ 一、发布功能思考、数据库、服务创建 上一节我们制作了后台的页面&#xff0c;那么此时我们应该需要制作发布功能了&#xff0c;那么在制作之前&#xff0c;我们应该思考一下如何制作这个签到内容发布的…

力扣(leetcode)第26题删除有序数组中的重复项(Python)

26.删除有序数组的重复项 题目链接&#xff1a;26.删除有序数组的重复项 给你一个非严格递增排列 的数组 nums &#xff0c;请你 原地 删除重复出现的元素&#xff0c;使每个元素 只出现一次 &#xff0c;返回删除后数组的新长度。元素的 相对顺序 应该保持 一致 。然后返回 …

WPF 实现简易北京地铁效果图

本文经原作者授权以原创方式二次分享&#xff0c;欢迎转载、分享。原文作者&#xff1a;眾尋原文地址&#xff1a; https://www.cnblogs.com/ZXdeveloper/p/8600785.html前言这个是百度地图上北京地铁的地址&#xff0c;我们先看下百度上面的效果图&#xff1b;我要实现的内容比…

C#学习笔记-Windows窗体自定义初始位置

根据屏幕大小定义初始位置&#xff1a; &#xff08;这个不是难&#xff0c;但是最近常常忘记&#xff0c;记着方便查看。&#xff09; 1 //获取当前屏幕的长和宽2 int ScreenX Screen.PrimaryScreen.Bounds.Width;3 int ScreenY Screen…

[转] java.nio.ByteBuffer中flip、rewind、clear方法的区别

转载 对缓冲区的读写操作首先要知道缓冲区的下限、上限和当前位置。下面这些变量的值对Buffer类中的某些操作有着至关重要的作用&#xff1a; limit&#xff1a;所有对Buffer读写操作都会以limit变量的值作为上限。position&#xff1a;代表对缓冲区进行读写时&#xff0c;当前…

【MATLAB统计分析与应用100例】案例014:matlab读取Excel数据,调用stepwise函数作交互式逐步回归分析

文章目录 1. 交互式逐步回归分析结果预览2. 完整matlab代码1. 交互式逐步回归分析结果预览 2. 完整matlab代码 % 从Excel文件examp08_03.xls中读取数值型数据 xydata = xlsread(examp08_03.xls); y = xydata<

MsSql 自定义分数段,按分数段统计考试人次

--分数段分布 DECLARE levels VARCHAR(100) 10,20,30,40,50,60,70,80,90,100; --自定义分数段 DECLARE paperId VARCHAR(100)0000000000001019--试卷编号 WITH tbTemp AS (--处理分数段SELECT L.levelFROM (SELECT [value] CONVERT(XML, <v> REPLACE(levels, ,, &l…

C语言试题五十四之求n以内(不包括n)同时能被3与7整除的所有自然数之和的平方根s,并作为函数值返回。

📃个人主页:个人主页 🔥系列专栏:C语言试题200例目录 💬推荐一款刷算法、笔试、面经、拿大公司offer神器 👉 点击跳转进入网站 ✅作者简介:大家好,我是码莎拉蒂,CSDN博客专家(全站排名Top 50),阿里云博客专家、51CTO博客专家、华为云享专家 1、题目 请编写一个…

opencv---颜色空间转化并实现物体跟踪

一、图像处理的基本操作 因为这是第一篇写opencv的笔记&#xff0c;故先讲讲在python下写opencv的基本操作。总共总结了三点如下&#xff1a; 开头一定要加编码声明:-*- coding: utf-8 -*-python下记得引入opencv模块:import cv2要知道如何读取并展示图片,代码如下:# -*- codin…