Skip to content

greaterthanmost/aspect-injector

 
 

Repository files navigation

Aspect Injector

Aspect Injector is an attribute-based framework for creating and injecting aspects into your .net assemblies.

Project Status

NuGet NuGet Pre Release Build Status

Download

> dotnet add package AspectInjector

Features

  • Compile-time injection
  • Injecting Before, After and Around targets
  • Injecting into Methods, Properties, Events
  • Injecting Interface implementaions
  • Supports any project that can reference netstandard2.0 libraries
  • Debugging support
  • Roslyn analyzers for your convenience (only c# currently)

Check out samples and docs

Requirements

  • .NetCore runtime 2.1.6+

Known Issues / Limitations

  • Unsafe methods are not supported and are silently ignored.
  • You cannot inject code around constructors. Such attempts are silently ignored. You can since 2.2.1!
  • Until Nuget v5 you need to refrecence AspectInjector into every project in your solution. Thus,
    if VisualStudio >= 2019 && CoreSDK >= 2.1.602
        no worries about references
    else 
        reference AspectInjector directly to projects where aspects are defined or used

Trivia

Create aspect:

[Aspect(Scope.Global)]
[Injection(typeof(LogCall))]
class LogCall : Attribute
{
    [Advice(Kind.Before)]
    public void LogEnter([Argument(Source.Name)] string name)
    {
        Console.WriteLine($"Calling {name}");   //you can debug it	
    }
}

Use it:

[LogCall]
public void Calculate() { }

About

AOP framework for .NET (c#, vb, etc)

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • C# 99.1%
  • PowerShell 0.9%