ConnectingApps.SmartInject
2.0.1-preview
See the version list below for details.
dotnet add package ConnectingApps.SmartInject --version 2.0.1-preview
NuGet\Install-Package ConnectingApps.SmartInject -Version 2.0.1-preview
<PackageReference Include="ConnectingApps.SmartInject" Version="2.0.1-preview" />
<PackageVersion Include="ConnectingApps.SmartInject" Version="2.0.1-preview" />
<PackageReference Include="ConnectingApps.SmartInject" />
paket add ConnectingApps.SmartInject --version 2.0.1-preview
#r "nuget: ConnectingApps.SmartInject, 2.0.1-preview"
#:package ConnectingApps.SmartInject@2.0.1-preview
#addin nuget:?package=ConnectingApps.SmartInject&version=2.0.1-preview&prerelease
#tool nuget:?package=ConnectingApps.SmartInject&version=2.0.1-preview&prerelease
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;
Health Check Result in Json
When adding a health check to your .NET application you typically, get a result like Healthy after doing a request.
The response is not very detailed, which can be a problem when there is something wrong.
However, instead of getting Healthy as a response, you can get a detailed json response instead:
{
"status": "Healthy",
"results": {
"ExampleHealthCheck": {
"status": "Healthy",
"description": "Example health check is healthy",
"data": {
"exampleDataKey": "exampleDataValue"
}
}
}
}
Achieving this is very simple. Instead of adding a health check like this:
app.MapHealthChecks("/healthz");
you'll add a health check like this:
app.MapHealthChecks("/healthz", new HealthCheckOptions
{
ResponseWriter = HealthCheckResponseWriters.WriteJsonResponse
});
with this namespace added:
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. net9.0 was computed. 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 was computed. 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. |
| .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.Bcl.AsyncInterfaces (>= 7.0.0 && <= 8.2.0)
- Microsoft.CSharp (>= 4.7.0)
- Microsoft.Extensions.Diagnostics.HealthChecks (>= 7.0.11 && <= 8.2.0)
- System.Text.Json (>= 4.6.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.4.0 | 424 | 11/11/2025 |
| 2.3.0 | 1,482 | 7/15/2025 |
| 2.2.0 | 4,423 | 2/15/2025 |
| 2.1.0 | 543 | 12/1/2024 |
| 2.0.2 | 11,594 | 10/5/2023 |
| 2.0.1-preview | 199 | 10/4/2023 |
| 1.0.2 | 422 | 10/3/2023 |
| 1.0.1-preview | 213 | 10/3/2023 |
Initial version