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
{
[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
{
[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
- 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";
- 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 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
{
services.AddScoped<CustomRepository>();
}
Di San Bu . Chuang Jian Controller
{
[HttpGet("1")]
public string Get([FromServices]CustomRepository repo, [FromQuery]string key)
{
return repo.Get(key);
}
}
Di Si Bu . Kong Zhi Tai Shu Chu
CustomRepository Get
Get After
5, Dong Tai Jie Kou Shi Xian
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);
}
}