ConnectingApps.SmartInject
1.0.2
See the version list below for details.
dotnet add package ConnectingApps.SmartInject --version 1.0.2
NuGet\Install-Package ConnectingApps.SmartInject -Version 1.0.2
<PackageReference Include="ConnectingApps.SmartInject" Version="1.0.2" />
paket add ConnectingApps.SmartInject --version 1.0.2
#r "nuget: ConnectingApps.SmartInject, 1.0.2"
// Install ConnectingApps.SmartInject as a Cake Addin
#addin nuget:?package=ConnectingApps.SmartInject&version=1.0.2
// Install ConnectingApps.SmartInject as a Cake Tool
#tool nuget:?package=ConnectingApps.SmartInject&version=1.0.2
SmartInject
SmartInject is a package to simplify dependency injection in .NET . For example, do you know how to deal with circular depencies? You may want to consider a redesign of your application. However, there is a quicker way:
Lazy Injection
Assume we have two classes. Instances of these classes need to communicate with each other without knowing each other. You may have experienced this Exception:
System.InvalidOperationException: A circular dependency was detected for the service of type ...
To solve this problem, the code will be like this:
public class Something : ISomething
{
private readonly Lazy<ISomethingElse> _somethingElse;
public Something(Lazy<ISomethingElse> somethingElse)
{
_somethingElse = somethingElse;
}
}
and
public class SomethingElse : ISomethingElse
{
private readonly Lazy<ISomething> _something;
public SomethingElse(Lazy<ISomething> something)
{
_something = something;
}
}
All you need to do now is to add the collowing line of code to your Program.cs
builder.Services.AddLazySingleton<ISomething, Something>();
Alternatively, you can use AddLazyTransient
or AddLazyScoped
instead.
Do not forget use the following namespace line:
using ConnectingApps.SmartInject;
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.Extensions.DependencyInjection.Abstractions (>= 3.1.0 && <= 8.2.0)
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 |
---|---|---|
2.0.2 | 1,538 | 10/5/2023 |
2.0.1-preview | 83 | 10/4/2023 |
1.0.2 | 243 | 10/3/2023 |
1.0.1-preview | 96 | 10/3/2023 |
Initial version