AspectInjector 2.7.2
Suggested Alternatives
There is a newer version of this package available.
See the version list below for details.
See the version list below for details.
dotnet add package AspectInjector --version 2.7.2
NuGet\Install-Package AspectInjector -Version 2.7.2
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="AspectInjector" Version="2.7.2" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add AspectInjector --version 2.7.2
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
#r "nuget: AspectInjector, 2.7.2"
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install AspectInjector as a Cake Addin #addin nuget:?package=AspectInjector&version=2.7.2 // Install AspectInjector as a Cake Tool #tool nuget:?package=AspectInjector&version=2.7.2
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
<img src="https://raw.githubusercontent.com/pamidur/aspect-injector/master/package.png" width="48" align="right"/>Aspect Injector
Aspect Injector is an attribute-based framework for creating and injecting aspects into your .net assemblies.
Project Status
Download
> dotnet add package AspectInjector
Features
- Compile-time injection - works with Blazor and AOT
- Injecting Before, After and Around (wrap) Methods, Constructors, Properties and Events
- Injecting Interface implementations
- Supports any project that can reference netstandard2.0 libraries, see here
- Debugging support
- Roslyn analyzers for your convenience (only c# currently)
Requirements
- (semi-optional) Nuget 5.0+ for transient build feature. All modern versions of VS and dotnetsdk have it. (If you still use project.json for some reason - make sure you add AspectInjector to all projects in the solution)
- (optional) For analyzers to work in VSCode, don't forget to enable
"omnisharp.enableRoslynAnalyzers": true
Known Issues / Limitations
- Unsafe methods are not supported and are silently ignored.
Simple advice
Create an aspect with simple advice:
[Aspect(Scope.Global)]
[Injection(typeof(LogCall))]
public class LogCall : Attribute
{
[Advice(Kind.Before)] // you can have also After (async-aware), and Around(Wrap/Instead) kinds
public void LogEnter([Argument(Source.Name)] string name)
{
Console.WriteLine($"Calling '{name}' method..."); //you can debug it
}
}
Use it:
[LogCall]
public void Calculate()
{
Console.WriteLine("Calculated");
}
Calculate();
Result:
$ dotnet run
Calling 'Calculate' method...
Calculated
Simple mixin
Create an aspect with mixin:
public interface IInitializable
{
void Init();
}
[Aspect(Scope.PerInstance)]
[Injection(typeof(Initializable))]
[Mixin(typeof(IInitializable))]
public class Initializable : IInitializable, Attribute
{
public void Init()
{
Console.WriteLine("Initialized!");
}
}
Use it:
[Initializable]
public class Target
{
}
var target = new Target() as IInitializable;
target.Init();
Result:
$ dotnet run
Initialized!
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. |
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
-
.NETStandard 2.0
- No dependencies.
NuGet packages (53)
Showing the top 5 NuGet packages that depend on AspectInjector:
Package | Downloads |
---|---|
NUnit.Allure
NUnit attributes extenstions for Allure |
|
Allure.Net.Commons
Provides common facilities to build Allure adapters for .NET test frameworks. |
|
AWS.Lambda.Powertools.Logging
Powertools for AWS Lambda (.NET) - Logging package. |
|
AWS.Lambda.Powertools.Tracing
Powertools for AWS Lambda (.NET) - Tracing package. |
|
NUnit.Allure.Steps
Steps Attribute for NUnit.Allure |
GitHub repositories (6)
Showing the top 5 popular GitHub repositories that depend on AspectInjector:
Repository | Stars |
---|---|
enkodellc/blazorboilerplate
Blazor Boilerplate / Starter Template with MudBlazor
|
|
pamidur/aspect-injector
AOP framework for .NET (c#, vb, etc)
|
|
SenexCrenshaw/StreamMaster
|
|
jhrscom/JHRS
The JHRS WPF framework is used to demonstrate how to use wpf and xamarin to build a development framework. The presentation framework only provides an idea. If you apply it to actual projects, you need to complete more functions yourself.
|
|
aws-powertools/powertools-lambda-dotnet
Powertools is a developer toolkit to implement Serverless best practices and increase developer velocity.
|
Version | Downloads | Last updated | |
---|---|---|---|
2.9.0-pre1 | 155 | 9/25/2024 | |
2.8.3-pre3 | 8,039 | 10/6/2023 | |
2.8.3-pre2 | 4,090 | 8/24/2023 | |
2.8.3-pre1 | 1,952 | 7/14/2023 | |
2.8.2 | 424,030 | 7/5/2023 | |
2.8.2-pre3 | 1,651 | 6/9/2023 | |
2.8.2-pre2 | 1,279 | 6/8/2023 | |
2.8.2-pre1 | 112,359 | 2/1/2023 | |
2.8.1 | 1,755,021 | 11/14/2022 | |
2.8.0 | 119,845 | 9/22/2022 | |
2.7.4 | 119,821 | 7/22/2022 | |
2.7.3 | 82,986 | 6/20/2022 | |
2.7.2 | 353,189 | 1/24/2022 | |
2.6.1 | 46,664 | 12/7/2021 | |
2.6.0 | 1,307,157 | 8/23/2021 | |
2.5.0 | 314,694 | 3/8/2021 | |
2.4.4 | 15,412 | 1/28/2021 | |
2.4.3 | 6,147 | 12/30/2020 | |
2.4.1 | 182,016 | 7/31/2020 | |
2.4.0 | 49,125 | 6/17/2020 | |
2.3.1 | 288,137 | 2/18/2020 | |
2.3.0 | 23,738 | 2/10/2020 | |
2.2.8 | 9,309 | 1/19/2020 | |
2.2.5 | 11,452 | 10/14/2019 | |
2.2.4 | 6,292 | 10/11/2019 | |
2.2.1 | 37,131 | 6/16/2019 | |
2.1.1 | 25,858 | 5/3/2019 | |
2.1.0 | 4,090 | 4/17/2019 | |
2.0.6 | 3,436 | 2/11/2019 | |
2.0.2 | 5,014 | 1/3/2019 | |
1.0.2 | 8,085 | 4/26/2019 | |
1.0.1 | 16,540 | 4/2/2018 | |
0.9.44 | 4,426 | 8/5/2015 | |
0.9.43 | 2,596 | 8/4/2015 | |
0.9.42 | 2,665 | 8/4/2015 |