OpenSharp.IoC
1.1.0
dotnet add package OpenSharp.IoC --version 1.1.0
NuGet\Install-Package OpenSharp.IoC -Version 1.1.0
<PackageReference Include="OpenSharp.IoC" Version="1.1.0" />
<PackageVersion Include="OpenSharp.IoC" Version="1.1.0" />
<PackageReference Include="OpenSharp.IoC" />
paket add OpenSharp.IoC --version 1.1.0
#r "nuget: OpenSharp.IoC, 1.1.0"
#:package OpenSharp.IoC@1.1.0
#addin nuget:?package=OpenSharp.IoC&version=1.1.0
#tool nuget:?package=OpenSharp.IoC&version=1.1.0
OpenSharp.IoC
OpenSharp.IoC is a dependency injection service for dotnet 8.0+, compatible with WPF, Avalonia, MAUI and everything else
How to use OpenSharp.IoC
Add the package to your project/solution.
Modules
OpenSharp.IoC uses modules to identify assemblies that you want to load and register services from inside your application. Each assembly should include a Module file, that inherits ModuleBase class.
The application assembly should also have one, that lists inside the Load() override the modules that should be loaded.
YourApplicationModuleClassName.cs
public class YourApplicationModuleClassName : ModuleBase
{
public override void Load(ServiceCollectionBuilder builder)
{
// Register other modules
ServiceDependency.RegisterModule<LibraryAlphaModule>(builder);
ServiceDependency.RegisterModule<LibraryBetaModule>(builder);
// ...
// Register specific services (can be Transient, Scoped or Singleton)
builder.AddTransient<IMyService, MyServiceImplementation>();
builder.AddTransient(typeof(IMyServiceB), typeof(MyServiceBImplementation));
builder.AddTransient(typeof(MyOtherServiceImplementation));
// ...
}
}
In the entrypoint of your application (App.xaml.cs, Main method, etc.) add the following line:
ServiceDependency.Build<YourApplicationModuleClassName>();
Service registration
In order to register services, there are multiple possibilities:
- Register directly a class with the
[Register]attribute - Register a singleton with the
[RegisterAsSingleton]attribute - Register an implementation of interfaces with the
[RegisterAsImplementedInterfaces(isSingleton:true/false)]attribute - Use the builder inside a Load method of a module to register specific services
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net8.0 is compatible. 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. net9.0 is compatible. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net10.0
- Microsoft.Extensions.DependencyInjection (>= 10.0.9)
-
net8.0
- Microsoft.Extensions.DependencyInjection (>= 10.0.9)
-
net9.0
- Microsoft.Extensions.DependencyInjection (>= 10.0.9)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.