IGet 1.0.5
See the version list below for details.
dotnet add package IGet --version 1.0.5
NuGet\Install-Package IGet -Version 1.0.5
<PackageReference Include="IGet" Version="1.0.5" />
paket add IGet --version 1.0.5
#r "nuget: IGet, 1.0.5"
// Install IGet as a Cake Addin #addin nuget:?package=IGet&version=1.0.5 // Install IGet as a Cake Tool #tool nuget:?package=IGet&version=1.0.5
IGet
Say goodbye to MediatR's IRequest-IRequestHandler combination and use IGet instead: less code, more freedom.
serviceCollection.AddIGet();
Why?
You're probably very happy with how MediatR solves injecting dependencies into your IRequestHandler implementations. You might however like IGet better as a simpler alternative for the IRequest-IRequestHandler combination:
- you don't need to implement any interface for your handlers.
- creating a request class is optional.
- have compile-time checks that all handlers exist.
- use editor-shortcuts to jump to a handler method immediately.
- have a shorter StackTrace in case of an error.
- etc.
IGet is not a replacement for - for example - INotifications and it does not have things like IRequestPostProcessors. It just instantiates a class with its dependencies injected.
Declaring a handler
Example 1
public class MyHandler
{
private ILogger<MyHandler> _logger;
public MyHandler(ILogger<MyHandler> logger)
{
_logger = logger;
}
public MyResult AnyRandomSignature(int id)
{
// do something
}
}
Example 2
public class MyHandler
{
private ILogger<MyHandler> _logger;
public MyHandler(ILogger<MyHandler> logger)
{
_logger = logger;
}
public void Handle()
{
// do something
}
}
Sending a request
In the examples below i
is the IGet
instance where you call Get
on. (Like mediator
might have been the name of the variable for a IMediator
instance where you called Send
on.)
Example 1
var result = i.Get<MyHandler>().AnyRandomSignature(1);
Example 2
var handler = i.Get<MyHandler>();
handler.Handle();
Example 3
var result = await i.Get<MyHandler>().HandleAsync(new MyRequest
{
Id = 2
});
etc.
More complex scenarios
Example 1
Handlers may get other handlers to do stuff for them, like validation, pre-processing and post-processing.
public class MoreComplexHandler
{
private ILogger<MoreComplexHandler> _logger;
private IGet i;
public MoreComplexHandler(IGet iget, ILogger<MoreComplexHandler> logger)
{
_logger = logger;
i = iget;
}
public Result<WhatWasAskedFor> Handle(Request request)
{
try
{
var validationResult = i.Get<Validator>().Validate(request);
if (!validationResult.IsValid)
{
return Result.Fail<WhatWasAskedFor>(validationResult.Message);
}
i.Get<PreProcessor>().Prepare(request);
var whatWasAskedFor = i.Get<MainProcessor>().Handle(request);
try
{
i.Get<PostProcessor>().DoLessImportantStuffWith(request, whatWasAskedFor);
}
catch (Exception ex)
{
_logger.LogWarning(ex, "PostProcessor failed for request {requestId}.", request.Id);
}
return Result.Success(whatWasAskedFor);
}
catch (Exception ex)
{
_logger.LogError(ex, "Unexpected error for request {requestId}.", request.Id);
return Result.Fail<WhatWasAskedFor>("Something went wrong. Try again later.");
}
}
}
Etc.
Try it out
What problem would you like to solve? Go ahead.
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
NuGet packages (1)
Showing the top 1 NuGet packages that depend on IGet:
Package | Downloads |
---|---|
IGet.GetAll
Extends IGet. Get an IEnumerable of class instances (with their dependencies injected) via i.GetAll<IMyInterface>() or i.GetAll<MyBaseClass>(). Additional setup: serviceCollection.AddIGetAll(new [] { typeof(Startup).Assembly, ... }). See the readme for many examples. |
GitHub repositories
This package is not used by any popular GitHub repositories.
Version | Downloads | Last updated |
---|---|---|
1.1.8 | 17,042 | 12/13/2023 |
1.1.7 | 132 | 12/13/2023 |
1.1.6 | 5,160 | 4/12/2023 |
1.1.5 | 969 | 3/29/2023 |
1.1.4 | 296 | 3/21/2023 |
1.1.3 | 296 | 3/20/2023 |
1.1.2 | 189 | 3/19/2023 |
1.1.1 | 325 | 3/16/2023 |
1.1.0 | 199 | 3/15/2023 |
1.0.14 | 197 | 3/15/2023 |
1.0.13 | 208 | 3/14/2023 |
1.0.12 | 206 | 3/14/2023 |
1.0.11 | 209 | 3/14/2023 |
1.0.10 | 207 | 3/14/2023 |
1.0.9 | 211 | 3/13/2023 |
1.0.8 | 214 | 3/13/2023 |
1.0.7 | 204 | 3/13/2023 |
1.0.6 | 193 | 3/13/2023 |
1.0.5 | 204 | 3/12/2023 |
1.0.4 | 221 | 3/12/2023 |
1.0.3 | 194 | 3/11/2023 |
1.0.2 | 210 | 3/10/2023 |
1.0.1 | 226 | 3/10/2023 |
1.0.0 | 226 | 3/10/2023 |
1.0.0-alpha | 146 | 3/10/2023 |