CoreDX.Extensions.DependencyInjection.Proxies.Abstractions 8.0.0

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

// Install CoreDX.Extensions.DependencyInjection.Proxies.Abstractions as a Cake Tool
#tool nuget:?package=CoreDX.Extensions.DependencyInjection.Proxies.Abstractions&version=8.0.0                

About

Add service descriptor extensions for register dynamic proxy.

How to Use

ServiceCollection services = new ();

// Get service type from implementation factory.
services.AddScoped(typeof(IB<>, (provider, requestServiceType) =>
{
    var closedType = typeof(B<>).MakeGenericType(type.GenericTypeArguments);
    return sp.GetService(closedType);
});

// Forward an open generic service to another open generic service.
services.AddScopedForward(typeof(IA<>), typeof(IB<>));

// Add explicit proxy to services.
services.AddScopedExplicitProxy(typeof(IA<>), typeof(MyInterceptor));

// Add implicit proxy to services.
services.AddScopedImplicitProxy(typeof(IB<>), typeof(MyInterceptor));

// Add keyed implicit proxy to services.
services.AddScopedImplicitProxy(typeof(IB<>), "key", typeof(MyInterceptor));

// Solidify open generic service proxy register at last.
services.SolidifyOpenGenericServiceProxyRegister();

using ServiceProvider provider = services.BuildServiceProvider();

// Get explicit proxy service using interface IProxyService<TService>.
var a = provider.GetService<IProxyService<IA<int>>>();

// Get implicit proxy service.
var b = provider.GetService<IB<int>>();

// Get original service using typed key or constant string.
var originalB1 = provider.GetKeyedService<IB<int>>(ImplicitProxyServiceOriginalServiceKey.StringDefault);
var originalB2 = provider.GetKeyedService<IB<int>>(ImplicitProxyServiceOriginalServiceKey.DefaultStringPrefix);

// Get keyed original service using typed key or constant string.
var originalB3 = provider.GetKeyedService<IB<int>>(ImplicitProxyServiceOriginalServiceKey.CreateStringOriginalServiceKey("key"));
var originalB4 = provider.GetKeyedService<IB<int>>($"{ImplicitProxyServiceOriginalServiceKey.DefaultStringPrefix}{"key"}");


public interface IA<T>;

public interface IB<T> : IA<T>;

public class B<T> : IB<T>;

public class MyInterceptor : IInterceptor
{
    public void Intercept(IInvocation invocation)
    {
        Console.WriteLine("MyInterceptorBefore");
        invocation.Proceed();
        Console.WriteLine("MyInterceptorAfter");
    }
}

Main Types

The main types provided by this library are:

  • CoreDX.Extensions.DependencyInjection.Proxies.ImplicitProxyServiceOriginalServiceKey
  • Microsoft.Extensions.DependencyInjection.CastleDynamicProxyDependencyInjectionExtensions
  • Castle.Core.AsyncInterceptor
  • CoreDX.Extensions.DependencyInjection.Abstractions
Product Compatible and additional computed target framework versions.
.NET net6.0 is compatible.  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 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. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages (2)

Showing the top 2 NuGet packages that depend on CoreDX.Extensions.DependencyInjection.Proxies.Abstractions:

Package Downloads
CoreDX.Extensions.DependencyInjection.Hosting.Proxies.Abstractions

Add generic host extensions for CoreDX.Extensions.DependencyInjection.Hosting.Proxies.ProxyTypedImplementationFactoryServiceProviderFactory.

CoreDX.Extensions.DependencyInjection.Hosting.Proxies

Add generic host extensions for CoreDX.Extensions.DependencyInjection.Hosting.Proxies.ProxyTypedImplementationFactoryServiceProviderFactory.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last updated
8.0.0.2 181 4/18/2024
8.0.0.1 141 4/17/2024
8.0.0 138 4/16/2024