WinUI.DependencyInjection
1.1.0
dotnet add package WinUI.DependencyInjection --version 1.1.0
NuGet\Install-Package WinUI.DependencyInjection -Version 1.1.0
<PackageReference Include="WinUI.DependencyInjection" Version="1.1.0" />
paket add WinUI.DependencyInjection --version 1.1.0
#r "nuget: WinUI.DependencyInjection, 1.1.0"
// Install WinUI.DependencyInjection as a Cake Addin #addin nuget:?package=WinUI.DependencyInjection&version=1.1.0 // Install WinUI.DependencyInjection as a Cake Tool #tool nuget:?package=WinUI.DependencyInjection&version=1.1.0
WinUI Dependency Injection Source Generator
This source generator makes possible to instantiate a Micrsoft.UI.Xaml.Controls.Page
via a service provider.
Why and how
You can find the detailed explanation in here.
Usage
The source generator generates the XamlMetadataServiceProviderAttribute
attribute and App class must have this attribute to override the default XamlMetadaProvider.
App.xaml.cs
:
[WinUI.DependencyInjection.XamlMetadataServiceProvider]
public partial class App : Application
{
public IHost Host { get; }
// If you want to make sure Pages activated by the provider then register them like this:
// ...
.ConfigureServices((hostContext, services) =>
{
services.AddTransient(() =>
{
Debugger.Break();
return new MainPage();
});
});
}
And the xaml compiler generated code.
XamlTypeInfo.g.cs
:
public partial class App : IXamlMetadataProvider
{
private XamlMetaDataProvider _AppProvider { get; }
}
If you have a custom service provider or if the xaml compiler generated code changes, you can implement the WinUI.DependencyInjection.IXamlMetadataServiceProvider
interface in the App.
You don't need to implement both (the interface has default imlementations) methods, the source generator will decide which is the suitable solution.
App.xaml.cs
:
[WinUI.DependencyInjection.XamlMetadataServiceProvider]
public partial class App : WinUI.DependencyInjection.IXamlMetadataServiceProvider
{
public object GetRequiredService(Type type)
{
// Your service provider.
}
// The generated provider has an _AppProvider property. If the WinUI team changes its name, you can update it with the new name here.
public IXamlMetadataProvider GetAppProvider() => typeof(App).GetProperty("NewAppProviderName", BindingFlags.NonPublic | BindingFlags.Instance).GetValue(this);
}
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. |
.NET Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
.NET Standard | netstandard2.0 is compatible. netstandard2.1 was computed. |
.NET Framework | net461 was computed. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. net481 was computed. |
MonoAndroid | monoandroid was computed. |
MonoMac | monomac was computed. |
MonoTouch | monotouch was computed. |
Tizen | tizen40 was computed. tizen60 was computed. |
Xamarin.iOS | xamarinios was computed. |
Xamarin.Mac | xamarinmac was computed. |
Xamarin.TVOS | xamarintvos was computed. |
Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETStandard 2.0
- Microsoft.CodeAnalysis.CSharp (>= 4.9.2)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
Version | Downloads | Last updated |
---|---|---|
1.1.0 | 125 | 8/18/2024 |