AspectLib 1.0.0
dotnet add package AspectLib --version 1.0.0
NuGet\Install-Package AspectLib -Version 1.0.0
<PackageReference Include="AspectLib" Version="1.0.0" />
<PackageVersion Include="AspectLib" Version="1.0.0" />
<PackageReference Include="AspectLib" />
paket add AspectLib --version 1.0.0
#r "nuget: AspectLib, 1.0.0"
#:package AspectLib@1.0.0
#addin nuget:?package=AspectLib&version=1.0.0
#tool nuget:?package=AspectLib&version=1.0.0
AspectLib
A no-config(still customisable) C# library of aspects using MrAdvice to replace repetitive code with simple attributes. Built as a free alternative to existing AOP frameworks where tooling is often expensive or awkward to integrate into modern solutions. This library simplifies cross-cutting concerns like caching without needing to wire up or manage infrastructure code manually. Designed to drop cleanly into .NET applications with minimal setup. For more information read the docs
📦 Installation
Install the package via NuGet:
dotnet add package AspectLib --version 1.0.0
Note:
This package includes MrAdvice as a dependency and automatically enables method interception and build-time weaving when your project builds.
🚀 Usage
Once installed, you can apply the attribute to your methods like so:
[Cache]
public async Task<CachedObject> GetByIdAsync(int id)
{
using var httpClient = new HttpClient();
var response = await httpClient.GetAsync($"https://www.example.com/{id}");
var content = await response.Content.ReadAsStringAsync();
return JsonConvert.DeserializeObject<CachedObject>(content);
}
Without [Cache]
the equivalent code would be:
public async Task<CachedObject> GetByIdAsync(int id)
{
var cacheKey = $"GetByIdAsync_{id}";
var cached = await this.cacheService.GetAsync<CachedObject>(cacheKey);
if (cached != null)
return cached;
using var httpClient = new HttpClient();
var response = await httpClient.GetAsync($"https://www.example.com/{id}");
var content = await response.Content.ReadAsStringAsync();
var result = JsonConvert.DeserializeObject<CachedObject>(content);
await cacheService.SetAsync(cacheKey, result, TimeSpan.FromMinutes(30));
return result;
}
📖 Features
Implemented:
Planned:
- Logging Aspect
- Retry Aspect
- Timeout Aspect
📦 Requirements & Compatibility
- Requires .NET 8.0 (other versions untested)
- Method interception powered by MrAdvice (included automatically)
✅ Roadmap
- Add Logging, Retry, Timeout aspects
- Write contribution guidelines & code style rules
🤝 Contributing
Contributions are welcome.
If you encounter a bug or have a feature request:
- Open an issue describing the problem or enhancement.
- Fork the repository.
- Submit a pull request. Fixes and improvements will be handled on a best-effort basis.
📜 License
MIT License. See LICENSE file for details.
Use at your own risk.
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net8.0 is compatible. 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. |
-
net8.0
- Microsoft.Extensions.Caching.Memory (>= 9.0.5)
- MrAdvice (>= 2.16.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 |
---|---|---|
1.0.0 | 136 | 5/19/2025 |
1.0.0-pre-release-1 | 120 | 5/18/2025 |
1.0.0-pre-release | 89 | 5/17/2025 |