From 3cafda2f39bd3f70e2cd69c868f7c906ed86760f Mon Sep 17 00:00:00 2001 From: James Montemagno Date: Thu, 9 Jan 2025 11:11:26 -0800 Subject: [PATCH 1/2] Remove MainPage registration from MauiProgram in multiple modules --- .../Part 1 - Fundamentals/Finish/MonkeyFinder/MauiProgram.cs | 2 +- .../Part 2 - Responsibility/Finish/MonkeyFinder/MauiProgram.cs | 2 +- .../Part 3 - Magic Values/Finish/MonkeyFinder/MauiProgram.cs | 2 +- .../XAML/Part 4 - Naming/Finish/MonkeyFinder/MauiProgram.cs | 2 +- .../Part 5 - Custom Types/Finish/MonkeyFinder/MauiProgram.cs | 2 +- Finish/MonkeyFinder/MauiProgram.cs | 2 -- Part 1 - Displaying Data/MonkeyFinder/MauiProgram.cs | 2 +- Part 2 - MVVM/MonkeyFinder/MauiProgram.cs | 2 +- Part 3 - Navigation/MonkeyFinder/MauiProgram.cs | 2 +- Part 4 - Platform Features/MonkeyFinder/MauiProgram.cs | 2 +- Part 5 - CollectionView/MonkeyFinder/MauiProgram.cs | 2 +- Part 6 - AppThemes/MonkeyFinder/MauiProgram.cs | 2 +- 12 files changed, 11 insertions(+), 13 deletions(-) diff --git a/Community Modules/XAML/Part 1 - Fundamentals/Finish/MonkeyFinder/MauiProgram.cs b/Community Modules/XAML/Part 1 - Fundamentals/Finish/MonkeyFinder/MauiProgram.cs index ed0e322c..ab7276e8 100644 --- a/Community Modules/XAML/Part 1 - Fundamentals/Finish/MonkeyFinder/MauiProgram.cs +++ b/Community Modules/XAML/Part 1 - Fundamentals/Finish/MonkeyFinder/MauiProgram.cs @@ -25,7 +25,7 @@ public static MauiApp CreateMauiApp() builder.Services.AddSingleton(); builder.Services.AddSingleton(); - builder.Services.AddSingleton(); + builder.Services.AddTransient(); builder.Services.AddTransient(); diff --git a/Community Modules/XAML/Part 2 - Responsibility/Finish/MonkeyFinder/MauiProgram.cs b/Community Modules/XAML/Part 2 - Responsibility/Finish/MonkeyFinder/MauiProgram.cs index ed0e322c..ab7276e8 100644 --- a/Community Modules/XAML/Part 2 - Responsibility/Finish/MonkeyFinder/MauiProgram.cs +++ b/Community Modules/XAML/Part 2 - Responsibility/Finish/MonkeyFinder/MauiProgram.cs @@ -25,7 +25,7 @@ public static MauiApp CreateMauiApp() builder.Services.AddSingleton(); builder.Services.AddSingleton(); - builder.Services.AddSingleton(); + builder.Services.AddTransient(); builder.Services.AddTransient(); diff --git a/Community Modules/XAML/Part 3 - Magic Values/Finish/MonkeyFinder/MauiProgram.cs b/Community Modules/XAML/Part 3 - Magic Values/Finish/MonkeyFinder/MauiProgram.cs index ed0e322c..ab7276e8 100644 --- a/Community Modules/XAML/Part 3 - Magic Values/Finish/MonkeyFinder/MauiProgram.cs +++ b/Community Modules/XAML/Part 3 - Magic Values/Finish/MonkeyFinder/MauiProgram.cs @@ -25,7 +25,7 @@ public static MauiApp CreateMauiApp() builder.Services.AddSingleton(); builder.Services.AddSingleton(); - builder.Services.AddSingleton(); + builder.Services.AddTransient(); builder.Services.AddTransient(); diff --git a/Community Modules/XAML/Part 4 - Naming/Finish/MonkeyFinder/MauiProgram.cs b/Community Modules/XAML/Part 4 - Naming/Finish/MonkeyFinder/MauiProgram.cs index ed0e322c..ab7276e8 100644 --- a/Community Modules/XAML/Part 4 - Naming/Finish/MonkeyFinder/MauiProgram.cs +++ b/Community Modules/XAML/Part 4 - Naming/Finish/MonkeyFinder/MauiProgram.cs @@ -25,7 +25,7 @@ public static MauiApp CreateMauiApp() builder.Services.AddSingleton(); builder.Services.AddSingleton(); - builder.Services.AddSingleton(); + builder.Services.AddTransient(); builder.Services.AddTransient(); diff --git a/Community Modules/XAML/Part 5 - Custom Types/Finish/MonkeyFinder/MauiProgram.cs b/Community Modules/XAML/Part 5 - Custom Types/Finish/MonkeyFinder/MauiProgram.cs index ed0e322c..ab7276e8 100644 --- a/Community Modules/XAML/Part 5 - Custom Types/Finish/MonkeyFinder/MauiProgram.cs +++ b/Community Modules/XAML/Part 5 - Custom Types/Finish/MonkeyFinder/MauiProgram.cs @@ -25,7 +25,7 @@ public static MauiApp CreateMauiApp() builder.Services.AddSingleton(); builder.Services.AddSingleton(); - builder.Services.AddSingleton(); + builder.Services.AddTransient(); builder.Services.AddTransient(); diff --git a/Finish/MonkeyFinder/MauiProgram.cs b/Finish/MonkeyFinder/MauiProgram.cs index ed0e322c..3dce180e 100644 --- a/Finish/MonkeyFinder/MauiProgram.cs +++ b/Finish/MonkeyFinder/MauiProgram.cs @@ -25,11 +25,9 @@ public static MauiApp CreateMauiApp() builder.Services.AddSingleton(); builder.Services.AddSingleton(); - builder.Services.AddSingleton(); builder.Services.AddTransient(); builder.Services.AddTransient(); - return builder.Build(); } } diff --git a/Part 1 - Displaying Data/MonkeyFinder/MauiProgram.cs b/Part 1 - Displaying Data/MonkeyFinder/MauiProgram.cs index 2f71a8dd..28140909 100644 --- a/Part 1 - Displaying Data/MonkeyFinder/MauiProgram.cs +++ b/Part 1 - Displaying Data/MonkeyFinder/MauiProgram.cs @@ -19,7 +19,7 @@ public static MauiApp CreateMauiApp() builder.Logging.AddDebug(); #endif - builder.Services.AddSingleton(); + return builder.Build(); } diff --git a/Part 2 - MVVM/MonkeyFinder/MauiProgram.cs b/Part 2 - MVVM/MonkeyFinder/MauiProgram.cs index 2f71a8dd..28140909 100644 --- a/Part 2 - MVVM/MonkeyFinder/MauiProgram.cs +++ b/Part 2 - MVVM/MonkeyFinder/MauiProgram.cs @@ -19,7 +19,7 @@ public static MauiApp CreateMauiApp() builder.Logging.AddDebug(); #endif - builder.Services.AddSingleton(); + return builder.Build(); } diff --git a/Part 3 - Navigation/MonkeyFinder/MauiProgram.cs b/Part 3 - Navigation/MonkeyFinder/MauiProgram.cs index 0a24b88b..9f26f5f2 100644 --- a/Part 3 - Navigation/MonkeyFinder/MauiProgram.cs +++ b/Part 3 - Navigation/MonkeyFinder/MauiProgram.cs @@ -22,7 +22,7 @@ public static MauiApp CreateMauiApp() builder.Services.AddSingleton(); builder.Services.AddSingleton(); - builder.Services.AddSingleton(); + return builder.Build(); } diff --git a/Part 4 - Platform Features/MonkeyFinder/MauiProgram.cs b/Part 4 - Platform Features/MonkeyFinder/MauiProgram.cs index 2b0d64ec..0d1c9047 100644 --- a/Part 4 - Platform Features/MonkeyFinder/MauiProgram.cs +++ b/Part 4 - Platform Features/MonkeyFinder/MauiProgram.cs @@ -22,7 +22,7 @@ public static MauiApp CreateMauiApp() builder.Services.AddSingleton(); builder.Services.AddSingleton(); - builder.Services.AddSingleton(); + builder.Services.AddTransient(); builder.Services.AddTransient(); diff --git a/Part 5 - CollectionView/MonkeyFinder/MauiProgram.cs b/Part 5 - CollectionView/MonkeyFinder/MauiProgram.cs index 0ea50241..05a23ca2 100644 --- a/Part 5 - CollectionView/MonkeyFinder/MauiProgram.cs +++ b/Part 5 - CollectionView/MonkeyFinder/MauiProgram.cs @@ -26,7 +26,7 @@ public static MauiApp CreateMauiApp() builder.Services.AddSingleton(); builder.Services.AddSingleton(); - builder.Services.AddSingleton(); + builder.Services.AddTransient(); builder.Services.AddTransient(); diff --git a/Part 6 - AppThemes/MonkeyFinder/MauiProgram.cs b/Part 6 - AppThemes/MonkeyFinder/MauiProgram.cs index aadac83a..343423fc 100644 --- a/Part 6 - AppThemes/MonkeyFinder/MauiProgram.cs +++ b/Part 6 - AppThemes/MonkeyFinder/MauiProgram.cs @@ -26,7 +26,7 @@ public static MauiApp CreateMauiApp() builder.Services.AddSingleton(); builder.Services.AddSingleton(); - builder.Services.AddSingleton(); + builder.Services.AddTransient(); builder.Services.AddTransient(); From 5b70b33ebd9b63eb9ca03a481e9baca998d99f75 Mon Sep 17 00:00:00 2001 From: James Montemagno Date: Fri, 10 Jan 2025 09:19:52 -0800 Subject: [PATCH 2/2] cleanup dependency injection --- .../Part 1 - Fundamentals/Finish/MonkeyFinder/MauiProgram.cs | 2 +- .../Finish/MonkeyFinder/MauiProgram.cs | 2 +- .../Part 3 - Magic Values/Finish/MonkeyFinder/MauiProgram.cs | 2 +- .../XAML/Part 4 - Naming/Finish/MonkeyFinder/MauiProgram.cs | 2 +- .../Part 5 - Custom Types/Finish/MonkeyFinder/MauiProgram.cs | 2 +- Finish/MonkeyFinder/MauiProgram.cs | 2 +- Part 3 - Navigation/README.md | 4 +++- Part 3 - Navigation/README.zh-cn.md | 4 +++- Part 3 - Navigation/README.zh-tw.md | 3 ++- Part 4 - Platform Features/MonkeyFinder/MauiProgram.cs | 2 +- Part 5 - CollectionView/MonkeyFinder/MauiProgram.cs | 2 +- Part 6 - AppThemes/MonkeyFinder/MauiProgram.cs | 2 +- 12 files changed, 17 insertions(+), 12 deletions(-) diff --git a/Community Modules/XAML/Part 1 - Fundamentals/Finish/MonkeyFinder/MauiProgram.cs b/Community Modules/XAML/Part 1 - Fundamentals/Finish/MonkeyFinder/MauiProgram.cs index ab7276e8..d6e05994 100644 --- a/Community Modules/XAML/Part 1 - Fundamentals/Finish/MonkeyFinder/MauiProgram.cs +++ b/Community Modules/XAML/Part 1 - Fundamentals/Finish/MonkeyFinder/MauiProgram.cs @@ -28,7 +28,7 @@ public static MauiApp CreateMauiApp() builder.Services.AddTransient(); - builder.Services.AddTransient(); + return builder.Build(); } diff --git a/Community Modules/XAML/Part 2 - Responsibility/Finish/MonkeyFinder/MauiProgram.cs b/Community Modules/XAML/Part 2 - Responsibility/Finish/MonkeyFinder/MauiProgram.cs index ab7276e8..d6e05994 100644 --- a/Community Modules/XAML/Part 2 - Responsibility/Finish/MonkeyFinder/MauiProgram.cs +++ b/Community Modules/XAML/Part 2 - Responsibility/Finish/MonkeyFinder/MauiProgram.cs @@ -28,7 +28,7 @@ public static MauiApp CreateMauiApp() builder.Services.AddTransient(); - builder.Services.AddTransient(); + return builder.Build(); } diff --git a/Community Modules/XAML/Part 3 - Magic Values/Finish/MonkeyFinder/MauiProgram.cs b/Community Modules/XAML/Part 3 - Magic Values/Finish/MonkeyFinder/MauiProgram.cs index ab7276e8..d6e05994 100644 --- a/Community Modules/XAML/Part 3 - Magic Values/Finish/MonkeyFinder/MauiProgram.cs +++ b/Community Modules/XAML/Part 3 - Magic Values/Finish/MonkeyFinder/MauiProgram.cs @@ -28,7 +28,7 @@ public static MauiApp CreateMauiApp() builder.Services.AddTransient(); - builder.Services.AddTransient(); + return builder.Build(); } diff --git a/Community Modules/XAML/Part 4 - Naming/Finish/MonkeyFinder/MauiProgram.cs b/Community Modules/XAML/Part 4 - Naming/Finish/MonkeyFinder/MauiProgram.cs index ab7276e8..d6e05994 100644 --- a/Community Modules/XAML/Part 4 - Naming/Finish/MonkeyFinder/MauiProgram.cs +++ b/Community Modules/XAML/Part 4 - Naming/Finish/MonkeyFinder/MauiProgram.cs @@ -28,7 +28,7 @@ public static MauiApp CreateMauiApp() builder.Services.AddTransient(); - builder.Services.AddTransient(); + return builder.Build(); } diff --git a/Community Modules/XAML/Part 5 - Custom Types/Finish/MonkeyFinder/MauiProgram.cs b/Community Modules/XAML/Part 5 - Custom Types/Finish/MonkeyFinder/MauiProgram.cs index ab7276e8..d6e05994 100644 --- a/Community Modules/XAML/Part 5 - Custom Types/Finish/MonkeyFinder/MauiProgram.cs +++ b/Community Modules/XAML/Part 5 - Custom Types/Finish/MonkeyFinder/MauiProgram.cs @@ -28,7 +28,7 @@ public static MauiApp CreateMauiApp() builder.Services.AddTransient(); - builder.Services.AddTransient(); + return builder.Build(); } diff --git a/Finish/MonkeyFinder/MauiProgram.cs b/Finish/MonkeyFinder/MauiProgram.cs index 3dce180e..7dab4bd1 100644 --- a/Finish/MonkeyFinder/MauiProgram.cs +++ b/Finish/MonkeyFinder/MauiProgram.cs @@ -27,7 +27,7 @@ public static MauiApp CreateMauiApp() builder.Services.AddSingleton(); builder.Services.AddTransient(); - builder.Services.AddTransient(); + builder.Services.AddSingleton(); return builder.Build(); } } diff --git a/Part 3 - Navigation/README.md b/Part 3 - Navigation/README.md index 2b2caa88..e73f340d 100644 --- a/Part 3 - Navigation/README.md +++ b/Part 3 - Navigation/README.md @@ -192,9 +192,11 @@ Now that we have our details page in place, we need to register it for routing. ```csharp builder.Services.AddTransient(); - builder.Services.AddTransient(); + ``` +> Starting in .NET 9 you no longer need to register Pages with the dependency service for constructor injection to work. By default when we navigate to a new page it will be created an the `MonkeyDetailsViewModel` will be injected as well. + 1. Finally, we must inject the view model into our `DetailsPage`. Open the code behind for the page in `DetailsPage.xaml.cs` and change the constructor to the following: ```csharp diff --git a/Part 3 - Navigation/README.zh-cn.md b/Part 3 - Navigation/README.zh-cn.md index 6f856f23..de0d21fc 100644 --- a/Part 3 - Navigation/README.zh-cn.md +++ b/Part 3 - Navigation/README.zh-cn.md @@ -186,9 +186,11 @@ public partial class DetailsPage : ContentPage ```csharp builder.Services.AddTransient(); - builder.Services.AddTransient(); + ``` +> Starting in .NET 9 you no longer need to register Pages with the dependency service for constructor injection to work. By default when we navigate to a new page it will be created an the `MonkeyDetailsViewModel` will be injected as well. + 3. 最后,我们必须将视图模型注入到我们的 `DetailsPage` 中。 在 `DetailsPage.xaml.cs` 中打开页面背后的代码,并将构造函数更改为以下内容: ```csharp diff --git a/Part 3 - Navigation/README.zh-tw.md b/Part 3 - Navigation/README.zh-tw.md index b940adb9..a482d7d1 100644 --- a/Part 3 - Navigation/README.zh-tw.md +++ b/Part 3 - Navigation/README.zh-tw.md @@ -186,8 +186,9 @@ public partial class DetailsPage : ContentPage ```csharp builder.Services.AddTransient(); - builder.Services.AddTransient(); + ``` +> Starting in .NET 9 you no longer need to register Pages with the dependency service for constructor injection to work. By default when we navigate to a new page it will be created an the `MonkeyDetailsViewModel` will be injected as well. 3. 最後,開啟 `DetailsPage.xaml.cs` 這個 DetailPage.xaml 所對應的後置程式碼檔案,並將 DetailPage 的建構方法改為如下內容: diff --git a/Part 4 - Platform Features/MonkeyFinder/MauiProgram.cs b/Part 4 - Platform Features/MonkeyFinder/MauiProgram.cs index 0d1c9047..afd92fbf 100644 --- a/Part 4 - Platform Features/MonkeyFinder/MauiProgram.cs +++ b/Part 4 - Platform Features/MonkeyFinder/MauiProgram.cs @@ -25,7 +25,7 @@ public static MauiApp CreateMauiApp() builder.Services.AddTransient(); - builder.Services.AddTransient(); + return builder.Build(); } diff --git a/Part 5 - CollectionView/MonkeyFinder/MauiProgram.cs b/Part 5 - CollectionView/MonkeyFinder/MauiProgram.cs index 05a23ca2..95662d28 100644 --- a/Part 5 - CollectionView/MonkeyFinder/MauiProgram.cs +++ b/Part 5 - CollectionView/MonkeyFinder/MauiProgram.cs @@ -29,7 +29,7 @@ public static MauiApp CreateMauiApp() builder.Services.AddTransient(); - builder.Services.AddTransient(); + return builder.Build(); } diff --git a/Part 6 - AppThemes/MonkeyFinder/MauiProgram.cs b/Part 6 - AppThemes/MonkeyFinder/MauiProgram.cs index 343423fc..fb2166e3 100644 --- a/Part 6 - AppThemes/MonkeyFinder/MauiProgram.cs +++ b/Part 6 - AppThemes/MonkeyFinder/MauiProgram.cs @@ -29,7 +29,7 @@ public static MauiApp CreateMauiApp() builder.Services.AddTransient(); - builder.Services.AddTransient(); + return builder.Build(); }