CoreDX.Extensions.DependencyInjection.Proxies.Abstractions
8.0.0
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 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
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
#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
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
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
Related Packages
Castle.Core.AsyncInterceptor
CoreDX.Extensions.DependencyInjection.Abstractions
Product | Versions 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.
-
net6.0
- Castle.Core.AsyncInterceptor (>= 2.1.0)
- CoreDX.Extensions.DependencyInjection.Abstractions (>= 8.0.1)
-
net8.0
- Castle.Core.AsyncInterceptor (>= 2.1.0)
- CoreDX.Extensions.DependencyInjection.Abstractions (>= 8.0.1)
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.