Interceptus 0.0.1-beta2
dotnet add package Interceptus --version 0.0.1-beta2
NuGet\Install-Package Interceptus -Version 0.0.1-beta2
<PackageReference Include="Interceptus" Version="0.0.1-beta2" />
paket add Interceptus --version 0.0.1-beta2
#r "nuget: Interceptus, 0.0.1-beta2"
// Install Interceptus as a Cake Addin #addin nuget:?package=Interceptus&version=0.0.1-beta2&prerelease // Install Interceptus as a Cake Tool #tool nuget:?package=Interceptus&version=0.0.1-beta2&prerelease
Interceptus
Interceptus is a .NET package which allows you to intercept method calls on classes through source-generated proxy classes.
Installation π¦
To install the package, run:
dotnet add package Interceptus
Usage π οΈ
Here's a quick example to get started:
// Define a custom interceptor
public class ExampleInterceptor : IInterceptor
{
public IMethodResult Invoke(IInterceptionContext context, Func<IInterceptionContext, IMethodResult> next)
{
// Modify parameters before proceeding
if(context.GetParameter("value") is int value)
{
context.SetParameter("value", value + 1);
}
return next(context);
}
public async Task<IMethodResult> InvokeAsync(IInterceptionContext context, Func<IInterceptionContext, Task<IMethodResult>> next)
{
// Handle asynchronous method calls
(...)
}
}
[Intercepting]
public class Service
{
[Interceptor<ExampleInterceptor>]
public virtual int DoSomething(int value) => value;
}
var services = new ServiceCollection()
.AddInterceptus()
.AddSingleton<ExampleInterceptor>()
.AddSingleton<Service, ServiceProxy>() // Register the proxy class instead of the original class
.BuildServiceProvider();
var service = services.GetRequiredService<Service>();
var value = service.DoSomething(value: 100);
Console.WriteLine(value); // Output: 101
Console.WriteLine(service.GetType().Name); // Output: ServiceProxy
Roadmap πΊοΈ
We welcome suggestions and feedback! Feel free to create issues for new feature requests. Below are some planned features, depending on community interest:
- Basic implementation for intercepting method calls.
- Improve test coverage.
- Support for intercepting properties.
- Support for intercepting constructors.
- Support for intercepting in classes which are defined in other classes.
- Probably better documentation for usages.
Contributing π€
Contributions are always welcome! If you plan to make significant changes, please open an issue first to discuss your ideas.
License π
This project is licensed under the MIT
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 (>= 9.0.0)
- PipelineNet (>= 0.10.1)
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 |
---|---|---|
0.0.1-beta2 | 34 | 11/23/2024 |
0.0.1-beta1 | 32 | 11/23/2024 |