PureProxy 1.0.2
dotnet add package PureProxy --version 1.0.2
NuGet\Install-Package PureProxy -Version 1.0.2
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="PureProxy" Version="1.0.2" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add PureProxy --version 1.0.2
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
#r "nuget: PureProxy, 1.0.2"
#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 PureProxy as a Cake Addin #addin nuget:?package=PureProxy&version=1.0.2 // Install PureProxy as a Cake Tool #tool nuget:?package=PureProxy&version=1.0.2
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
PureProxy
轻代理AOP,实现方法拦截以及入参返回值修改。
安装
Install-Package PureProxy
注意项
- 忽略代理添加
IgnoreProxyAttribute
特性 - 局部拦截实现
InterceptorAttribute
特性,优先级:忽略 > 方法 > 类型 > 全局 - 类代理时需要定义为
virtual
示例
// 添加全局拦截器
public class TestInterceptor : IInterceptor
{
public void Invoke(IArguments args)
{
// TODO...
// 修改入参
// args.Arguments[0] = "Test";
// 调用方法
var result = args.Invoke();
// TODO...
// 修改返回值
// args.SetResult("Test");
}
}
// 局部拦截
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method)]
public class ExceptionAttribute : InterceptorAttribute
{
public override object Invoke(IArguments arguments)
{
try
{
// TODO...
// 修改入参
// args.Arguments[0] = "Test";
// 调用方法
var result = args.Invoke();
// TODO...
// 修改返回值
// args.SetResult("Test");
}
catch (Exception ex)
{
Console.WriteLine($"Error: {ex.Message}");
}
return default;
}
}
public class TestService : ITestService
{
[Exception]
public string Test()
{
throw new NotImplementedException();
}
}
// 添加注入
services.AddPureProxy<TestInterceptor>(options =>
{
options.AddScoped<Test1Service>();
options.AddScoped<ITestService, TestService>();
});
更新记录
2022-11-09
添加局部拦截 InterceptorAttribute
特性。 b6cd619
2022-11-04
添加抽象服务类代理支持。 c4f198f
Product | Versions 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 | 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 was computed. |
.NET Framework | net461 was computed. net462 was computed. 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. |
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
-
.NETStandard 2.0
- Microsoft.Extensions.DependencyInjection.Abstractions (>= 6.0.0)
- System.Reflection.Emit (>= 4.7.0)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.