HuanMengAdmin/admin-server/MiaoYu.Api.Admin/wwwroot/docs/assets/ioc-aop.html-c387c913.js
2024-07-18 02:27:50 +08:00

51 lines
12 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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(`<h1 id="ioc-和-aop" tabindex="-1"><a class="header-anchor" href="#ioc-和-aop" aria-hidden="true">#</a> Ioc 和 Aop</h1><div class="custom-container warning"><p class="custom-container-title">提示</p><p>我们只需要对服务添加继承一个接口即可自动注入[服务将变为 ioc 对象]框架采用微软原汁原味的ioc注入提倡构造注入。</p></div><div class="language-csharp line-numbers-mode" data-ext="cs"><pre class="language-csharp"><code><span class="token keyword">public</span> <span class="token keyword">interface</span> <span class="token class-name">IAccountService</span> <span class="token punctuation">:</span> <span class="token type-list"><span class="token class-name">IScopedDependency</span></span>
<span class="token punctuation">{</span>
<span class="token return-type class-name">Task<span class="token punctuation">&lt;</span><span class="token keyword">string</span><span class="token punctuation">&gt;</span></span> <span class="token function">GetUserNameAsync</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token punctuation">}</span>
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h2 id="框架提供了多种类型的注入接口" tabindex="-1"><a class="header-anchor" href="#框架提供了多种类型的注入接口" aria-hidden="true">#</a> 框架提供了多种类型的注入接口</h2><blockquote><p>可以根据自己的业务需求选择不同的注入方式,但是框架封装好了,你的服务只需要继承 ApplicationService 类即可。</p></blockquote><blockquote><p>除非自定义一些特殊的服务,否则不需要继承其他的接口。</p></blockquote><blockquote><p>带有 Self 名字结尾注入服务自身,不带 Self 名字结尾代表注入接口。</p></blockquote>`,7),r={href:"https://gitee.com/hzy6/hzy-scan-di-service/wikis/pages",target:"_blank",rel:"noopener noreferrer"},k=a(`<div class="language-csharp line-numbers-mode" data-ext="cs"><pre class="language-csharp"><code><span class="token keyword">namespace</span> <span class="token namespace">MiaoYu<span class="token punctuation">.</span>Framework<span class="token punctuation">.</span>AutoRegisterIOC</span><span class="token punctuation">;</span>
<span class="token doc-comment comment">/// <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>summary</span><span class="token punctuation">&gt;</span></span></span>
<span class="token doc-comment comment">/// 注册 Scoped</span>
<span class="token doc-comment comment">/// <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>summary</span><span class="token punctuation">&gt;</span></span></span>
<span class="token keyword">public</span> <span class="token keyword">interface</span> <span class="token class-name">IScopedDependency</span> <span class="token punctuation">{</span> <span class="token punctuation">}</span>
<span class="token doc-comment comment">/// <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>summary</span><span class="token punctuation">&gt;</span></span></span>
<span class="token doc-comment comment">/// 注册 Scoped 自身实现类</span>
<span class="token doc-comment comment">/// <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>summary</span><span class="token punctuation">&gt;</span></span></span>
<span class="token keyword">public</span> <span class="token keyword">interface</span> <span class="token class-name">IScopedSelfDependency</span> <span class="token punctuation">{</span> <span class="token punctuation">}</span>
<span class="token doc-comment comment">/// <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>summary</span><span class="token punctuation">&gt;</span></span></span>
<span class="token doc-comment comment">/// 注册 Singleton</span>
<span class="token doc-comment comment">/// <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>summary</span><span class="token punctuation">&gt;</span></span></span>
<span class="token keyword">public</span> <span class="token keyword">interface</span> <span class="token class-name">ISingletonDependency</span> <span class="token punctuation">{</span> <span class="token punctuation">}</span>
<span class="token doc-comment comment">/// <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>summary</span><span class="token punctuation">&gt;</span></span></span>
<span class="token doc-comment comment">/// 注册 Singleton 自身实现类</span>
<span class="token doc-comment comment">/// <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>summary</span><span class="token punctuation">&gt;</span></span></span>
<span class="token keyword">public</span> <span class="token keyword">interface</span> <span class="token class-name">ISingletonSelfDependency</span> <span class="token punctuation">{</span> <span class="token punctuation">}</span>
<span class="token doc-comment comment">/// <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>summary</span><span class="token punctuation">&gt;</span></span></span>
<span class="token doc-comment comment">/// 注册 Transient</span>
<span class="token doc-comment comment">/// <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>summary</span><span class="token punctuation">&gt;</span></span></span>
<span class="token keyword">public</span> <span class="token keyword">interface</span> <span class="token class-name">ITransientDependency</span> <span class="token punctuation">{</span> <span class="token punctuation">}</span>
<span class="token doc-comment comment">/// <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>summary</span><span class="token punctuation">&gt;</span></span></span>
<span class="token doc-comment comment">/// 注册 Transient 自身实现类</span>
<span class="token doc-comment comment">/// <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>summary</span><span class="token punctuation">&gt;</span></span></span>
<span class="token keyword">public</span> <span class="token keyword">interface</span> <span class="token class-name">ITransientSelfDependency</span> <span class="token punctuation">{</span> <span class="token punctuation">}</span>
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h2 id="aop-拦截器" tabindex="-1"><a class="header-anchor" href="#aop-拦截器" aria-hidden="true">#</a> Aop 拦截器</h2><div class="custom-container warning"><p class="custom-container-title">提示</p><p>通过这个注入方式我们可以对程序做拦截器现在系统默认有4种可以通过继承 AopBaseAttribute 实现自定义拦截特性</p></div><p><img src="`+i+`" alt="定时任务"></p><h2 id="配置信息注入标记-appsettings-你的json节点地址" tabindex="-1"><a class="header-anchor" href="#配置信息注入标记-appsettings-你的json节点地址" aria-hidden="true">#</a> 配置信息注入标记 [AppSettings(“你的json节点地址”)]</h2><div class="custom-container tip"><p class="custom-container-title">提示</p><p>针对 appsettings.json 配置信息</p><p>1、必须是属性 不能是 字段</p><p>2、属性必须是 virtual</p></div><div class="language-csharp line-numbers-mode" data-ext="cs"><pre class="language-csharp"><code><span class="token punctuation">[</span><span class="token function">AppSettings</span><span class="token punctuation">(</span><span class="token string">&quot;ConnectionStrings:DefaultConnection&quot;</span>&quot;<span class="token punctuation">)</span><span class="token punctuation">]</span>
<span class="token keyword">public</span> <span class="token keyword">virtual</span> <span class="token return-type class-name"><span class="token keyword">string</span></span> ConnectionString <span class="token punctuation">{</span> <span class="token keyword">get</span><span class="token punctuation">;</span> <span class="token keyword">set</span><span class="token punctuation">;</span> <span class="token punctuation">}</span>
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div></div></div><h2 id="服务实例注入标记-autowired" tabindex="-1"><a class="header-anchor" href="#服务实例注入标记-autowired" aria-hidden="true">#</a> 服务实例注入标记 [Autowired]</h2><div class="custom-container tip"><p class="custom-container-title">提示</p><p>注入不需要构造通过 Autowired 特性即可拿到服务实例</p><p>1、必须是属性 不能是 字段</p><p>2、属性必须是 virtual</p></div><div class="language-csharp line-numbers-mode" data-ext="cs"><pre class="language-csharp"><code><span class="token keyword">public</span> <span class="token keyword">class</span> <span class="token class-name">Test</span> <span class="token punctuation">:</span> <span class="token type-list"><span class="token class-name">ITransientSelfDependency</span></span>
<span class="token punctuation">{</span>
<span class="token punctuation">[</span><span class="token attribute"><span class="token class-name">Autowired</span></span><span class="token punctuation">]</span>
<span class="token keyword">public</span> <span class="token keyword">virtual</span> <span class="token return-type class-name">IAccountService</span> _accountService <span class="token punctuation">{</span> <span class="token keyword">get</span><span class="token punctuation">;</span> <span class="token keyword">set</span><span class="token punctuation">;</span> <span class="token punctuation">}</span>
<span class="token keyword">public</span> <span class="token return-type class-name"><span class="token keyword">void</span></span> <span class="token function">Run</span><span class="token punctuation">(</span><span class="token punctuation">)</span>
<span class="token punctuation">{</span>
_accountService<span class="token punctuation">.</span><span class="token function">GetAccountContext</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">// 获取当前登录人信息</span>
<span class="token comment">// todo ...</span>
<span class="token punctuation">}</span>
<span class="token punctuation">}</span>
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div>`,10);function m(v,b){const e=c("ExternalLinkIcon");return p(),o("div",null,[d,n("blockquote",null,[n("p",null,[s("更多操作请看此链接:"),n("a",r,[s("https://gitee.com/hzy6/hzy-scan-di-service/wikis/pages"),l(e)])])]),k])}const y=t(u,[["render",m],["__file","ioc-aop.html.vue"]]);export{y as default};