Autofac.Extras.Ordering
4.0.0
dotnet add package Autofac.Extras.Ordering --version 4.0.0
NuGet\Install-Package Autofac.Extras.Ordering -Version 4.0.0
<PackageReference Include="Autofac.Extras.Ordering" Version="4.0.0" />
paket add Autofac.Extras.Ordering --version 4.0.0
#r "nuget: Autofac.Extras.Ordering, 4.0.0"
// Install Autofac.Extras.Ordering as a Cake Addin #addin nuget:?package=Autofac.Extras.Ordering&version=4.0.0 // Install Autofac.Extras.Ordering as a Cake Tool #tool nuget:?package=Autofac.Extras.Ordering&version=4.0.0
Autofac.Extras.Ordering
An Autofac extension that adds recognition of IOrderedEnumerable<T>
as a relationship type, allowing multiple dependencies to be resolved in a guaranteed order.
By default, order is not guaranteed when resolving IEnumerable<T>
.
Download
Usage
First, declare a constructor argument of type IOrderedEnumerable<TDependency>
for the component dependent on multiple services:
public class SomeComponent
{
public SomeComponent(IOrderedEnumerable<Dependency> dependencies)
{
Dependencies = dependencies;
}
public IEnumerable<Dependency> Dependencies { get; private set; }
}
public class Dependency
{
public Dependency(string name)
{
Name = name;
}
public string Name { get; private set; }
}
Then, register that component as usual:
builder.RegisterType<SomeComponent>();
Next, register dependencies with the order in which they should be provided using the extension method .OrderBy()
.
A constant order may be used:
builder.Register(_ => new Dependency("1"))
.OrderBy(1);
builder.Register(_ => new Dependency("2"))
.OrderBy(2);
Or, a function may be provided that determines the order based on a dependency's own properties:
builder.Register(_ => new Dependency("1"))
.OrderBy(d => d.Name);
builder.Register(_ => new Dependency("2"))
.OrderBy(d => d.Name);
Finally, add the OrderedRegistrationSource to enable support for IOrderedEnumerable<T>
:
builder.RegisterSource(new OrderedRegistrationSource());
When SomeComponent
is resolved, it will be supplied with Dependencies sorted by the order each was given.
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
- Autofac (>= 6.0.0)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories (1)
Showing the top 1 popular GitHub repositories that depend on Autofac.Extras.Ordering:
Repository | Stars |
---|---|
recyclarr/recyclarr
Automatically sync TRaSH Guides to your Sonarr and Radarr instances
|