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.pswp.cn/news/286080.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/286080.shtml
英文地址,請注明出處:http://en.pswp.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…