首页 > 其他分享 >【Abp笔记】依赖注入

【Abp笔记】依赖注入

时间:2022-11-23 23:56:01浏览次数:82  
标签:依赖 string Form 笔记 Abp Form1 IGreetService GreetService public

Abp 依赖注入

官方文档

https://docs.abp.io/zh-Hans/abp/latest/Dependency-Injection

基本使用

直接注册

context.Services.AddTransient<IGreetService, GreetService>();

实现接口(就是一个标记)

ITransientDependency

打Dependency特性

[Dependency(ServiceLifetime.Transient)]

// 如果已经有注册过,可以改ReplaceServices为true,从而替换掉原有的
[Dependency(ServiceLifetime.Transient, ReplaceServices = true)]

当实现的接口特别多,程序报错了,可能会用到

[ExposeService(typeof(接口))]

控制台使用Autofac属性注入

  • 在使用工厂创建AbpApplication的时候,调用options的UseAutofac方法

这里是一个winform项目的示例

public static class Program
{ 
    [STAThread]
    static void Main()
    {
        var app = AbpApplicationFactory.Create<MyModule>(options =>
        {
            options.UseAutofac();
        });

        app.Initialize();

        ApplicationConfiguration.Initialize();
        
        // 获取Form类型实例必须在 Winform的ApplicationConfiguration.Initialize();方法之后,不然会报错。
        // 哪怕是通过new创建一个Form对象,也要放到其后面

        var form = app.ServiceProvider.GetService<Form1>();
        Application.Run(form);
    }
}

接口和实现,并打上自动注册的标识

public interface IGreetService
{
    string Hello(string name);
}

public class GreetService : IGreetService,ITransientDependency
{
    public string Hello(string name)
    {
        return $"你好,{name}";
    }
}

添加了这个之后,就可以在任何通过ServiceProder构造出来的对象内,添加属性的方式注入自己需要的服务,比如

public partial class Form1 : Form 
{
    // 直接加个属性,就可以了。
    public IGreetService GreetService { get; set; }

    public Form1()
    {
        InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e)
    {
        var str = GreetService.Hello(txtName.Text);
        MessageBox.Show(str);
    }
}    public partial class Form1 : Form 
{
    public IGreetService GreetService { get; set; }

    public Form1()
    {
        InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e)
    {
        var str = GreetService.Hello(txtName.Text);
        MessageBox.Show(str);
    }
}

标签:依赖,string,Form,笔记,Abp,Form1,IGreetService,GreetService,public
From: https://www.cnblogs.com/wosperry/p/16920565.html

相关文章

  • 微积分 I 笔记
    1.1集合这一节复习了高中关于集合的基础知识介绍了一些新的概念笛卡尔积(CartesianProduct)集合\(X\)与\(Y\)的笛卡尔积(直积)\(X\timesY\)是指包含了所......
  • Spring--注解开发+依赖注入
    自动装配数据层:业务层:自动装配:结果:若是将自动装配的注解放在set函数处:结果:结果相同,若是将set方法去掉的话:结果:这样的话,set方法也得到解放了耶!以上都是按照类型装......
  • Head First Java 读书笔记 18章
    第18章:远程部署RMI(分布式计算)什么是RMI?即RemoteMethodInvocation,远程方法调用技术。截止目前,我们学习到的Java方法调用,都是发生在相同堆上的两个对象之间。即对象......
  • Docker学习笔记七:Docker提交镜像到阿里云仓库
    一、准备1、开启阿里云镜像仓库a.访问阿里云地址并登陆地址:http://cr.console.aliyun.comb.选择“容器镜像服务”c.使用“个人实例”构建仓库d.创建命名空......
  • 软件技术基础学习笔记(3)——合作完成一个电梯演讲视频
    软件技术基础https://edu.cnblogs.com/campus/zjlg/22rjjc这个作业的目标<二人合作完成一个电梯演讲>姓名-学号<卢昕豪>-<2020330301200>姓名-学号<王康......
  • LeetCode刷题笔记—13.罗马数字转整数
    在此不再做题目描述。(该题链接:13.罗马数字转整数-力扣(LeetCode))在观察罗马数字时,我们可以发现计算罗马数字的技巧:可以设定一个初始值ans=0,然后对罗马数字从左到......
  • Vue笔记 - 自定义事件与事件总线
    自定义事件与事件总线目录自定义事件与事件总线1.事件1.1基本使用1.2事件修饰符1.3键盘事件2.自定义事件3.全局事件总线1.事件1.1基本使用使用v-on:xxx或......
  • Opengl统一变量-TheCherno学习笔记
    uniform:全局变量.传输CPU数据到GPU#version330corelayout(location=0)outvec4color;//注意命名u_uniformvec4u_Color;voidmain(){color=u_Co......
  • 软件技术基础学习笔记(3)——合作完成一个电梯演讲视频
    软件技术基础学习笔记(3)——合作完成一个电梯演讲视频这个作业属于哪个课程<首页-22软件基础-浙江理工大学-班级博客-博客园>这个作业的目标<两人合作,完......
  • MySQL中用户和系统变量设置获取使用@和@@ global和session--笔记
    1、概述mysql有用户变量和系统变量,系统变量又分全局(global)和会话(session)查看set命令root@localhost:01:23[7308][(none)]>helpset;Name:'SET'Description:Syntax:......