国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

宣布推出 .NET 社區(qū)工具包 8.1!

這篇具有很好參考價值的文章主要介紹了宣布推出 .NET 社區(qū)工具包 8.1!。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報違法"按鈕提交疑問。

我們很高興地宣布 .NET Community Toolkit 8.1 版正式發(fā)布!這個新版本包括呼聲很高的新功能、bug 修復(fù)和對 MVVM 工具包源代碼生成器的大量性能改進(jìn),使開發(fā)人員在使用它們時的用戶體驗比以往更好!?

宣布推出 .NET 社區(qū)工具包 8.1!

就像在我們之前的版本中一樣,我們非常感謝 Microsoft 使用該工具包的團(tuán)隊以及社區(qū)中的其他開發(fā)人員收到的所有反饋,這些反饋已經(jīng)并將繼續(xù)對我們?nèi)绾卧O(shè)計所有新功能和改進(jìn)并確定其優(yōu)先級產(chǎn)生巨大影響。我們非常感謝每一位做出貢獻(xiàn)并不斷幫助 .NET Community Toolkit 變得更好的人!
?

.NET 社區(qū)工具包中有什么?

?

正如我們在之前的公告帖子中所做的那樣,讓我們首先簡要回顧一下 .NET Community Toolkit 包含的內(nèi)容。它由幾個獨(dú)立的庫組成:

  • CommunityToolkit.Common
  • CommunityToolkit.Mvvm?(又名“Microsoft MVVM Toolkit”)
  • CommunityToolkit.Diagnostics
  • CommunityToolkit.HighPerformance

這些庫還廣泛用于 Windows 附帶的多個收件箱應(yīng)用程序,例如 Microsoft Store 和照片應(yīng)用程序!

有關(guān) .NET Community Toolkit 歷史的更多詳細(xì)信息,請訪問我們之前的8.0.0公告帖子的鏈接。

以下是 .NET Community Toolkit 新 8.1 版中包含的主要更改的部分。

?

自定義屬性?[ObservableProperty]

?

正如我們在8.1.0預(yù)覽版1公告博客文章中提到的,對于 MVVM 工具包源代碼生成器,我們最需要的功能之一(請參閱#208、#217、#228)是支持對[ObservableProperty]使用自定義屬性。有幾個提議的設(shè)計來支持這一點(diǎn),我們最終決定利用 C# 中的現(xiàn)有語法?“property”:?來讓開發(fā)人員標(biāo)記屬性以傳播到生成的屬性。有幾個優(yōu)勢:

  • 它利用內(nèi)置的 C# 語法,使該功能感覺“原生”并且不需要額外的屬性
  • 它解決了注解屬性只能針對屬性,不能針對字段的問題

也就是說,使用 MVVM Toolkit 8.1,現(xiàn)在支持以下場景:

[ObservableProperty] 
[property: JsonPropertyName("responseName")] 
[property: JsonRequired] 
private string? _name; 

這將在幕后生成以下屬性:

[JsonPropertyName("responseName")] 
[JsonRequired] 
public string? Name 
{ 
    get => _name; 
    set 
    { 
        if (!EqualityComparer<string?>.Default.Equals(_name, value)) 
        { 
            OnPropertyChanging("Name"); 
            OnNameChanging(value); 
 
            _name = value; 
 
            OnPropertyChanged("Name"); 
            OnNameChanged(value); 
        } 
    } 
} 
 
partial void OnNameChanging(string? value); 
partial void OnNameChanged(string? value);

可以看到生成的屬性有我們指定的兩個屬性!這允許完全靈活地為生成的屬性添加注釋,同時使用內(nèi)置的 C# 語法并且對該功能支持的屬性類型沒有限制。

注意:生成的代碼略有不同,包括此處未顯示的其他性能優(yōu)化。

您可以在鏈接找到我們關(guān)于新源代碼生成器的所有文檔。

?

MVVM 工具包分析器

?

此版本的 MVVM 工具包也是第一個引入專用分析器的版本。它能夠幫助開發(fā)人員以最佳方式使用 MVVM 工具包。也就是說,MVVM 工具包將不再只是針對使用錯誤的功能發(fā)出診斷(例如,以報錯的方式),它現(xiàn)在還會顯示改進(jìn)代碼和避免常見錯誤的建議!

第一個分析器涵蓋了使用[ObservableProperty]屬性時的一個常見錯誤。參照這個例子:

[ObservableProperty]
private string? name;

[RelayCommand]
public async Task LoadUserAsync()
{
    User user = await _userService.FetchUserAsync();

    name = user.Name; // Whoops! Assigning to the field!
}

開發(fā)人員不小心分配給一個字段(而不是生成的屬性),然后被卡在 UI 上。UI 上沒有顯示該更改,也沒有明確說明為什么會這樣,這一情景已經(jīng)被多次提出。新的分析器將在這些情況下提供幫助,它將標(biāo)記支持可觀察屬性的字段的所有賦值,并顯示診斷建議引用生成的屬性。你不會再收到莫名其妙的屬性丟失的通知。

第二個新分析器旨在幫助減少使用 MVVM 工具包的應(yīng)用程序中的二進(jìn)制文件大小。正如我們在8.0.0 公告帖子中提到的,MVVM 工具包包含多個屬性(例如[ObservableObject]),這些屬性允許生成器將實現(xiàn) INotifyPropertyChanged 和 INotifyPropertyChanging 接口所需的所有代碼(也可選擇使用其他幫助程序)注入現(xiàn)有類。

這僅適用于無法繼承的情況:如果您不屬于這種情況,您應(yīng)該選擇繼承 ObservableObject,從而減小的二進(jìn)制文件大小,因為編譯器不必在每個過程中一遍又一遍地復(fù)制那些相同的助手類型。請參閱這個例子:

[ObservableObject]
public partial class MyViewModel
{
    [ObservableProperty]
    private string? name;
}

這里,MyViewModel 不是從任何類型繼承而來,因此它應(yīng)該繼承 ObservableObject 而不是使用[ObservableObject]屬性,以此改進(jìn)二進(jìn)制大小。新的分析器將標(biāo)記所有與此類似的場景并建議改用繼承。這將特別有助于初學(xué)者,他們可能不了解兩種不同方法的細(xì)微差別并且可能不知道如何選擇。在這些情況下,現(xiàn)在分析器可以提供幫助。

?

MVVM 工具包源代碼生成器優(yōu)化

?

正如我們提到的,這個新版本還包括對 MVVM 工具包的主要性能優(yōu)化,以進(jìn)一步改善開發(fā)人員的用戶體驗,尤其是優(yōu)化了開發(fā)人員在處理非常大的解決方案時的體驗。我們花了很多時間改進(jìn)我們所有生成器的架構(gòu),并與 Roslyn 團(tuán)隊的工程師交談,以確保我們正在盡可能地發(fā)揮它們的性能。

以下只是我們在這方面所做的一部分改進(jìn):

  • 為 Roslyn 4.3 添加了多目標(biāo)(#428,#462):如果支持,MVVM 工具包源代碼生成器現(xiàn)在將使用 Roslyn 4.3 目標(biāo),這樣他們就可以在主機(jī)支持的情況下選擇加入一些更優(yōu)化的 API。這一功能在引用 MVVM 工具包時會自動啟用。
  • 使用 ForAttributeWithMetadataName<T>(#436):我們將生成器切換到新的高級 Roslyn API 以匹配屬性,這大大提高了生成器觸發(fā)特定屬性的性能。比如現(xiàn)在[ObservableProperty]就在用這個。
  • 將診斷移入診斷分析器(#433,#434):我們將幾乎所有診斷都移動到診斷分析器,這些診斷分析器在進(jìn)程外運(yùn)行并且獨(dú)立于源生成器。這樣能夠顯著減少鍵入時的overhead,因為所有診斷邏輯現(xiàn)在都在單獨(dú)的進(jìn)程中運(yùn)行,并且不會降低 IntelliSense 的速度。
  • 停止在增量提供程序中使用符號(?#435?):我們更新了所有增量提供程序以不再傳播符號。這可以減少內(nèi)存使用,因為傳播符號會導(dǎo)致 Roslyn 不必要地根編譯對象。
  • 更多性能優(yōu)化(#447、#460、#469、#487、#489):我們徹底檢查了所有增量模型和增量管道,以顯著提高性能并減少內(nèi)存分配。

?

IObservable<T>?信使擴(kuò)展

?

另一個功能需求,尤其是由那些在應(yīng)用程序中大量使用響應(yīng)式 API 開發(fā)人員提出,是尋求一種方法來橋接 MVVM 工具包中的功能。界面的新擴(kuò)展?IObservable<T>?extensions?現(xiàn)在支持此功能。它們可以按如下方式使用:

IObservable<MyMessage> observable = Messenger.CreateObservable<MyMessage>();

就像這樣!此擴(kuò)展將創(chuàng)建一個對象 IObservable<T>?,該對象可用于訂閱消息并對其做出動態(tài)反應(yīng)。還支持通過單獨(dú)的重載指定不同的標(biāo)記。這面這個示例展示了新 API 的端到端使用:

var token = 
    Messenger 
    .CreateObservable<MyMessage>() 
    .Where(...) 
    .Subscribe(m => Console.WriteLine($"Hello {m.Username}!")); 

?

.NET 7和 C# 11支持

?

.NET Community Toolkit 工具包的新發(fā)布版本還將 .NET 7 TFM 添加到高性能包中,新版本中還包括一些變動,主要對新的 C# 11語言功能進(jìn)行了改善,比如?ref?fields?就是一個典型。

以下類型現(xiàn)在不再處于預(yù)覽狀態(tài),以及更新使用了新的 ref?安全規(guī)則:

  • Ref<T>
  • ReadOnlyRef<T>
  • NullableRef<T>
  • ReadOnlyNullableRef<T>

下面這種場景可以使用這些規(guī)則:

public static bool TryGetElementRef(out NullableRef<T> reference) 
{ 
    // Logic here... 
} 

也就是說,使用?NullableRef<T>?類型規(guī)則可以有效地讓方法具有 out?ref?T?參數(shù), 而這在 C# 中是無法通過表達(dá)式做到的. 我們還計劃擴(kuò)展這些類型的 API 淺層面,從而允許這些類型通過使用 Unsafe 類型,提供一種易于使用的替代 GC-ref 算法的方法,這在視覺上也更類似于傳統(tǒng)的指針?biāo)惴ā?/p>

此外,所有不在預(yù)覽模式中的 ref?struct?類型都已被更新,使用內(nèi)部的 ref?字段實現(xiàn)更好的性能。這些類型包括:

  • Span2D<T>
  • ReadOnlySpan2D<T>
  • RefEnumerable<T>
  • ReadOnlyRefEnumerable<T>
  • SpanEnumerable<T>
  • ReadOnlySpanEnumerable<T>

?

其他變化

?

新版本中包含更多內(nèi)容!?您可以在?GitHub release page?發(fā)布頁面中查看完整的變更日志。

您可以在?GitHub repo?找到所有的源代碼,也能在?MS Learn?上找到一些手寫文檔, 還能在 .NET API 瀏覽器網(wǎng)站中找到完整的 API 參考文檔。如果您想為新版本的改善貢獻(xiàn)自己的力量, 請隨時提問題或聯(lián)系我們,讓我們知道您的體驗!

如果您想了解有關(guān) MVVM 工具包的更多信息,您還可以觀看最近?.NET Conf 2022?中的視頻。

新版本中有整套可用的 Toolkit-s 生態(tài)系統(tǒng),其中有大量有用的 API 可用于構(gòu)建 .NET 應(yīng)用程序。祝您編碼愉快!??文章來源地址http://www.zghlxwxcb.cn/news/detail-440834.html

到了這里,關(guān)于宣布推出 .NET 社區(qū)工具包 8.1!的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點(diǎn)擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • MATLAB添加工具包(詳細(xì))

    MATLAB添加工具包(詳細(xì))

    我這里要添加的文件包為:DeepLearnToolbox-master 我這里的安裝目錄是:D:softwareMATLABtoolbox (1)以中文版為例,在主界面找到“設(shè)置路徑”按鈕 (2)點(diǎn)擊“設(shè)置路徑”,彈出設(shè)置界面 第一步:點(diǎn)“添加文件夾” (注:如果要工具包中有多個子文件夾,則點(diǎn)“添加并包含子文

    2024年02月02日
    瀏覽(21)
  • 【Linux】基本開發(fā)工具包使用

    【Linux】基本開發(fā)工具包使用

    目錄 一, yum ——linux軟件包管理器 ?1. 軟件包是啥子? ?2.? yum基本使用? 1. 步驟:? 2. 開發(fā)工具推薦(centos 7.6) 二,vim —— linux文本編輯器 1. Normal mode? ——? 命令模式(記不住沒關(guān)系,多練就行) 2.? last line? mode——? ?末行模式 (如何進(jìn)入;shift :) 3.?Insert mode ——插

    2024年02月08日
    瀏覽(29)
  • Hardhat工具包1--安裝使用

    Hardhat工具包1--安裝使用

    參考資料: 官方文檔 : https://hardhat.org/getting-started/ https://hardhat.org/hardhat-runner/docs/getting-started#overview 基于Hardhat和Openzeppelin開發(fā)可升級合約(一) 基于Hardhat和Openzeppelin開發(fā)可升級合約(一)_灬倪先森_的博客-CSDN博客 ---------------------------------------------------------------------------------

    2023年04月11日
    瀏覽(25)
  • Windows11滲透工具包分享

    Windows11滲透工具包分享

    ? ? ? ? ? 項目地址 下載地址

    2024年02月13日
    瀏覽(20)
  • Quanto: PyTorch 量化工具包

    量化技術(shù)通過用低精度數(shù)據(jù)類型 (如 8 位整型 (int8)) 來表示深度學(xué)習(xí)模型的權(quán)重和激活,以減少傳統(tǒng)深度學(xué)習(xí)模型使用 32 位浮點(diǎn) (float32) 表示權(quán)重和激活所帶來的計算和內(nèi)存開銷。 減少位寬意味著模型的內(nèi)存占用更低,這對在消費(fèi)設(shè)備上部署大語言模型至關(guān)重要。量化技術(shù)也

    2024年04月10日
    瀏覽(31)
  • NetAssist網(wǎng)絡(luò)調(diào)試工具使用指南 (附NetAssist工具包)

    1、NetAssist簡介 NetAssist網(wǎng)絡(luò)調(diào)試助手,是Windows平臺下開發(fā)的TCP/IP網(wǎng)絡(luò)調(diào)試工具,集TCP/UDP服務(wù)端及客戶端于一體,是網(wǎng)絡(luò)應(yīng)用開發(fā)及調(diào)試工作必備的專業(yè)工具之一,可以幫助網(wǎng)絡(luò)應(yīng)用設(shè)計、開發(fā)、測試人員檢查所開發(fā)的網(wǎng)絡(luò)應(yīng)用軟/硬件產(chǎn)品的數(shù)據(jù)收發(fā)狀況,提高開發(fā)速度,簡

    2024年02月16日
    瀏覽(22)
  • 淺談WPF之MVVM工具包

    淺談WPF之MVVM工具包

    在之前的WPF示例中,都會用到一個MVVM框,也是一個比較常的MVVM框架,就是MVVM工具包【CommunityToolkit.Mvvm】,今天專門以一個簡單的小例子,簡述一下MVVM工具包的常見用法,僅供學(xué)習(xí)分享使用,如有不足之處,還請指正。 ? ? CommunityToolkit.Mvvm 包(又名 MVVM 工具包)是一個現(xiàn)代

    2024年03月25日
    瀏覽(24)
  • Kubernetes GoRoutineMap工具包代碼詳解

    GoRoutineMap 定義了一種類型,可以運(yùn)行具有名稱的 goroutine 并跟蹤它們的狀態(tài)。它防止創(chuàng)建具有相同名稱的多個goroutine,并且在上一個具有該名稱的 goroutine 完成后的一段退避時間內(nèi)可能阻止重新創(chuàng)建 goroutine。 使用GoRoutineMap場景: 使用協(xié)程的方式運(yùn)行函數(shù)邏輯,如果函數(shù)成功

    2024年02月06日
    瀏覽(22)
  • 實踐學(xué)習(xí)PaddleScience飛槳科學(xué)工具包

    實踐學(xué)習(xí)PaddleScience飛槳科學(xué)工具包

    動手實踐,在實踐中學(xué)習(xí)!本項目可以在AIStudio平臺一鍵運(yùn)行!地址:https://aistudio.baidu.com/projectdetail/4278591 本項目第一次執(zhí)行會報錯,再執(zhí)行一次即可。若碰到莫名其妙的報錯,換成32G顯存環(huán)境試試。 愛因斯坦和牛頓也是普通人,也有認(rèn)識不到的地方,不要盲目崇拜,也不要

    2024年01月16日
    瀏覽(26)
  • IPOP 使用詳解 (附IPOP工具包)

    IPOP 使用詳解 (附IPOP工具包)

    IPOP 是一款設(shè)備調(diào)試終端工具,功能很強(qiáng)大,集合很多服務(wù)、調(diào)試、查看手段于一身,主要功能如下: IP 地址動態(tài)綁定功能; 路由信息查詢和配置功能; MAC 地址信息查詢和修改功能; MAC 、主機(jī)信息掃描功能; 本機(jī)網(wǎng)絡(luò)報文統(tǒng)計功能; 本機(jī)端口列表、遠(yuǎn)程端口掃描功能;

    2024年02月16日
    瀏覽(21)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包