import{_ as t,r as c,o as p,c as o,b as n,d as s,e as l,a}from"./app-4f4af2d5.js";const i="/docs/hzy-admin/ioc-aop-1.jpg",u={},d=a(`
提示
我们只需要对服务添加继承一个接口即可自动注入[服务将变为 ioc 对象],框架采用微软原汁原味的ioc注入,提倡构造注入。
public interface IAccountService : IScopedDependency
{
Task<string> GetUserNameAsync();
}
可以根据自己的业务需求选择不同的注入方式,但是框架封装好了,你的服务只需要继承 ApplicationService 类即可。
除非自定义一些特殊的服务,否则不需要继承其他的接口。
`,7),r={href:"https://gitee.com/hzy6/hzy-scan-di-service/wikis/pages",target:"_blank",rel:"noopener noreferrer"},k=a(`带有 Self 名字结尾注入服务自身,不带 Self 名字结尾代表注入接口。
namespace MiaoYu.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 { }
提示
通过这个注入方式,我们可以对程序做拦截器,现在系统默认有4种,可以通过继承 AopBaseAttribute 实现自定义拦截特性
提示
针对 appsettings.json 配置信息
1、必须是属性 不能是 字段
2、属性必须是 virtual
[AppSettings("ConnectionStrings:DefaultConnection"")]
public virtual string ConnectionString { get; set; }
提示
注入不需要构造通过 Autowired 特性即可拿到服务实例
1、必须是属性 不能是 字段
2、属性必须是 virtual
public class Test : ITransientSelfDependency
{
[Autowired]
public virtual IAccountService _accountService { get; set; }
public void Run()
{
_accountService.GetAccountContext(); // 获取当前登录人信息
// todo ...
}
}