Lamar.DynamicInterception 1.0.0

There is a newer version of this package available.
See the version list below for details.
dotnet add package Lamar.DynamicInterception --version 1.0.0
NuGet\Install-Package Lamar.DynamicInterception -Version 1.0.0
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="Lamar.DynamicInterception" Version="1.0.0" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add Lamar.DynamicInterception --version 1.0.0
#r "nuget: Lamar.DynamicInterception, 1.0.0"
#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 Lamar.DynamicInterception as a Cake Addin
#addin nuget:?package=Lamar.DynamicInterception&version=1.0.0

// Install Lamar.DynamicInterception as a Cake Tool
#tool nuget:?package=Lamar.DynamicInterception&version=1.0.0

Lamar.DynamicInterception

This project is an adapation of StructureMap.DynamicInterception. This Project is just a workaround to support dynamic interceptions with Lamar as interceptors are not supported yet natively by Lamar.

Interceptor Behavior Definition

namespace App
{
    using Lamar.Interception;
    using System;
    using System.Collections.Generic;
    using System.Threading.Tasks;
    
    public sealed class CustomInterceptionBehavior : IAsyncInterceptionBehavior
    {
        public async Task<IMethodInvocationResult> InterceptAsync(IAsyncMethodInvocation methodInvocation)
        {
            MethodInfo method = methodInvocation.MethodInfo;

            return await methodInvocation.InvokeNextAsync().ConfigureAwait(false);
        }
    }
}

Service Interfaces Definitions

public interface IWidget
{
   String GetTitle();
}

public interface IWidgetProxy : IWidget
{
    //you should define this proxy Interface to act just as a proxy.
    //Never add any definition method in this interface.
    //All definitions methods should go into IWidget.
    //I created this interface to handel activator interception
    //because activator interceptor is not supported yet
    //by Lamar.
}

Service Implementation

public class Widget : IWidget, IWidgetProxy
{
   public String GetTitle()
   {
       return "My name is DefaultWidget"
   }
}

Service Registration

var container = new Container(services =>
{
   services.For<IWidgetProxy>().Use<Widget>;
   services.For<IWidget>.InterceptWith<IWidget, IWidgetProxy>(typeof(CustomInterceptionBehavior))
});
Product 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 netcoreapp3.0 was computed.  netcoreapp3.1 was computed. 
.NET Standard netstandard2.1 is compatible. 
MonoAndroid monoandroid was computed. 
MonoMac monomac was computed. 
MonoTouch monotouch was computed. 
Tizen 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.

NuGet packages (1)

Showing the top 1 NuGet packages that depend on Lamar.DynamicInterception:

Package Downloads
D3K.Diagnostics.Lamar

D3K.Diagnostics.Lamar

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last updated
1.1.1 3,115 10/10/2022
1.1.0 383 10/6/2022
1.0.1 8,088 10/17/2019
1.0.0 490 10/17/2019