Light Mode

Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

2881099/FreeSql.DynamicProxy

Repository files navigation

Qing Liang Ji AOP Dong Tai Dai Li ,Zhi Chi .NetCore Huo .NetFramework4.0+ Ping Tai .

  • Zhi Chi Tong Bu /Yi Bu Fang Fa Lan Jie ;
  • Zhi Chi Fang Fa De Can Shu Zhi Lan Jie ,Bing Zhi Chi Xiu Gai Can Shu Zhi ;
  • Zhi Chi Shu Xing Lan Jie ;
  • Zhi Chi Duo Ge Lan Jie Qi Tong Shi Sheng Xiao ;
  • Zhi Chi Yi Lai Zhu Ru De Shi Yong Fang Shi ;
  • Zhi Chi Dong Tai Jie Kou Shi Xian ;

dotnet add package FreeSql.DynamicProxy

1, Ding Yi Lan Jie Qi

class CustomAttribute : FreeSql.DynamicProxyAttribute
{
[FreeSql.DynamicProxyFromServices]
IServiceProvider _service;

public override Task Before(FreeSql.DynamicProxyBeforeArguments args)
{
Console.WriteLine($"{args.MemberInfo.Name} Before");
return base.Before(args);
}
public override Task After(FreeSql.DynamicProxyAfterArguments args)
{
Console.WriteLine($"{args.MemberInfo.Name} After");
return base.After(args);
}
}
  • Lan Jie Qi He Te Xing Yi Qi Ding Yi ,He Er Wei Yi ;
  • Si You Zi Duan Ke Cong IocFan Zhuan Huo De Dui Xiang ,Ru Shang Mian De _service;

2, Kai Shi Lan Jie

public class CustomRepository
{
[Custom]
public virtual string Get(string key)
{
Console.WriteLine($"CustomRepository Get");
return $"CustomRepository.Get({key}) value";
}
}
  • Lan Jie De Fang Fa Xu Shi Yong Xiu Shi Fu virtual;

3, Before/After Can Shu Shuo Ming

  1. Before args
Property Type Notes
Sender Object Dai Li Dui Xiang
InjectorType Enum Method, PropertyGet, PropertySet
MemberInfo MemberInfo Fan She Xin Xi
Parameters Dictionary Fang Fa De Can Shu Lie Biao
ReturnValue Object She Zhi Fang Fa De Fan Hui Zhi

Lan Jie Bing Xiu Gai Fang Fa De Can Shu Zhi : args.Parameters["key"] = "NewKey";

Lan Jie Fang Fa De Fan Hui Zhi :args.ReturnValue = "NewValue";

  1. After args
Property Type Notes
Sender Object Dai Li Dui Xiang
InjectorType Enum Method, PropertyGet, PropertySet
MemberInfo MemberInfo Fan She Xin Xi
Parameters Dictionary Fang Fa De Can Shu Lie Biao
ReturnValue Object Huo Qu Fang Fa De Fan Hui Zhi
Exception Exception Yuan Fang Fa Zhi Xing De Yi Chang Dui Xiang
ExceptionHandled bool Kong Zhi Yuan Fang Fa Zhi Xing Fa Sheng Yi Chang Hou De Xing Wei

ExceptionHandled:False: Pao Chu Yi Chang (Mo Ren ), True: Hu Lue Yi Chang (Ji Xu Zhi Xing )

4, AspNetCore Huan Jing

Di Yi Bu . Xiu Gai Program.cs

public class Program
{
public static void Main(string[] args)
{
CreateHostBuilder(args).Build().Run();
}

public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<Startup>();
})
.UseServiceProviderFactory(new FreeSql.DynamicProxyServiceProviderFactory());
}

Di Er Bu . Zhu Ru CustomRepository

public void ConfigureServices(IServiceCollection services)
{
services.AddScoped<CustomRepository>();
}

Di San Bu . Chuang Jian Controller

public class ValuesController : ControllerBase
{
[HttpGet("1")]
public string Get([FromServices]CustomRepository repo, [FromQuery]string key)
{
return repo.Get(key);
}
}

Di Si Bu . Kong Zhi Tai Shu Chu

Get Before
CustomRepository Get
Get After

5, Dong Tai Jie Kou Shi Xian

var api = DynamicProxy.Resolve<IUserApi>();
Console.WriteLine(api.Get("001"));

public interface IUserApi
{
[HttpGet("api/user")]
string Get(string id);
}

class HttpGetAttribute : FreeSql.DynamicProxyAttribute
{
string _url;
public HttpGetAttribute(string url)
{
_url = url;
}
public override Task Before(FreeSql.DynamicProxyBeforeArguments args)
{
args.ReturnValue = $"{args.MemberInfo.Name} HttpGet {_url}";
return base.Before(args);
}
}

About

The dynamic proxy on The .NetCore or .NetFramework4.0+. Support asynchronous method interception, Method parameter interception, Property interception, multiple intercepts, dependency injection and inversion of control

Topics

Resources

Readme

License

MIT license

Stars

Watchers

Forks

Releases

No releases published

Packages

Contributors

Languages