Ioc 和 Aop
提示
我们只需要对服务添加继承一个接口即可自动注入[服务将变为 ioc 对象],框架采用微软原汁原味的ioc注入,提倡构造注入。
public interface IAccountService : IScopedDependency
{
Task<string> GetUserNameAsync();
}
框架提供了多种类型的注入接口
可以根据自己的业务需求选择不同的注入方式,但是框架封装好了,你的服务只需要继承 ApplicationService 类即可。
除非自定义一些特殊的服务,否则不需要继承其他的接口。
带有 Self 名字结尾注入服务自身,不带 Self 名字结尾代表注入接口。
更多操作请看此链接:https://gitee.com/hzy6/hzy-scan-di-service/wikis/pages
namespace CloudGaming.Framework.AutoRegisterIOC;
/// <summary>
/// 注册 Scoped
/// </summary>
public interface IScopedDependency { }
/// <summary>
/// 注册 Scoped 自身实现类
/// </summary>
public interface IScopedSelfDependency { }
/// <summary>
/// 注册 Singleton
/// </summary>
public interface ISingletonDependency { }
/// <summary>
/// 注册 Singleton 自身实现类
/// </summary>
public interface ISingletonSelfDependency { }
/// <summary>
/// 注册 Transient
/// </summary>
public interface ITransientDependency { }
/// <summary>
/// 注册 Transient 自身实现类
/// </summary>
public interface ITransientSelfDependency { }
Aop 拦截器
提示
通过这个注入方式,我们可以对程序做拦截器,现在系统默认有4种,可以通过继承 AopBaseAttribute 实现自定义拦截特性

配置信息注入标记 [AppSettings(“你的json节点地址”)]
提示
针对 appsettings.json 配置信息
1、必须是属性 不能是 字段
2、属性必须是 virtual
[AppSettings("ConnectionStrings:DefaultConnection"")]
public virtual string ConnectionString { get; set; }
服务实例注入标记 [Autowired]
提示
注入不需要构造通过 Autowired 特性即可拿到服务实例
1、必须是属性 不能是 字段
2、属性必须是 virtual
public class Test : ITransientSelfDependency
{
[Autowired]
public virtual IAccountService _accountService { get; set; }
public void Run()
{
_accountService.GetAccountContext(); // 获取当前登录人信息
// todo ...
}
}