CoreDX.Extensions.DependencyInjection.Proxies.Abstractions
8.0.0.2
dotnet add package CoreDX.Extensions.DependencyInjection.Proxies.Abstractions --version 8.0.0.2
NuGet\Install-Package CoreDX.Extensions.DependencyInjection.Proxies.Abstractions -Version 8.0.0.2
<PackageReference Include="CoreDX.Extensions.DependencyInjection.Proxies.Abstractions" Version="8.0.0.2" />
paket add CoreDX.Extensions.DependencyInjection.Proxies.Abstractions --version 8.0.0.2
#r "nuget: CoreDX.Extensions.DependencyInjection.Proxies.Abstractions, 8.0.0.2"
// Install CoreDX.Extensions.DependencyInjection.Proxies.Abstractions as a Cake Addin #addin nuget:?package=CoreDX.Extensions.DependencyInjection.Proxies.Abstractions&version=8.0.0.2 // Install CoreDX.Extensions.DependencyInjection.Proxies.Abstractions as a Cake Tool #tool nuget:?package=CoreDX.Extensions.DependencyInjection.Proxies.Abstractions&version=8.0.0.2
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 | net5.0 was computed. net5.0-windows was computed. 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 is compatible. 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. |
.NET Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
.NET Standard | netstandard2.0 is compatible. netstandard2.1 is compatible. |
.NET Framework | net461 was computed. net462 is compatible. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. net481 was computed. |
MonoAndroid | monoandroid was computed. |
MonoMac | monomac was computed. |
MonoTouch | monotouch was computed. |
Tizen | tizen40 was computed. tizen60 was computed. |
Xamarin.iOS | xamarinios was computed. |
Xamarin.Mac | xamarinmac was computed. |
Xamarin.TVOS | xamarintvos was computed. |
Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETFramework 4.6.2
- Castle.Core.AsyncInterceptor (>= 2.1.0)
- CoreDX.Extensions.DependencyInjection.Abstractions (>= 8.0.1.2)
-
.NETStandard 2.0
- Castle.Core.AsyncInterceptor (>= 2.1.0)
- CoreDX.Extensions.DependencyInjection.Abstractions (>= 8.0.1.2)
-
.NETStandard 2.1
- Castle.Core.AsyncInterceptor (>= 2.1.0)
- CoreDX.Extensions.DependencyInjection.Abstractions (>= 8.0.1.2)
-
net6.0
- Castle.Core.AsyncInterceptor (>= 2.1.0)
- CoreDX.Extensions.DependencyInjection.Abstractions (>= 8.0.1.2)
-
net7.0
- Castle.Core.AsyncInterceptor (>= 2.1.0)
- CoreDX.Extensions.DependencyInjection.Abstractions (>= 8.0.1.2)
-
net8.0
- Castle.Core.AsyncInterceptor (>= 2.1.0)
- CoreDX.Extensions.DependencyInjection.Abstractions (>= 8.0.1.2)
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.
Add netstandard2.0;netstandard2.1;net462 support.