新建winform项目,命名为WfaAutoFacDemo,使用nuget添加autofac的引用,最新版为4.8.1,直接安装即可

添加一个服务接口:IService和ISecondService,定义如下:

namespace WfaAutoFacDemo.Interface
{public interface IService{string Do();}public interface ISecondService : IService{string SecondDo();}}

添加三个实体类,定义如下,第一个继承接口IService,第二个继承ISecondService,第三个没有继承接口:

namespace WfaAutoFacDemo.Model
{public class FirstModel : IService{private string first = "first";public string Do(){return first;}}public class SecondModel : ISecondService{private string second = "second";public string Do(){return second;}public string SecondDo(){return $"{second}-{second}";}}public class ThirdModel{private string third = "third";public string Do(){return third;}}
}

在form1中添加注册类型如下:

//在类中定义变量
private IContainer container;//构造函数中添加如下代码
var builder = new ContainerBuilder();builder.RegisterType<FirstModel>().Named<IService>("First");
builder.RegisterType<SecondModel>().Named<IService>("Second");
builder.RegisterType<SecondModel>().Named<ISecondService>("Second");
builder.RegisterType<ThirdModel>();
builder.RegisterInstance(this).As<Form>();
container = builder.Build();

form1中添加四个按钮,四个Label,

四个按钮的点击功能如下:

private void BtnFirstModel_Click(object sender, EventArgs e)
{var first =container.ResolveOptionalNamed<IService>("First");lblFirstModel.Text = first.Do();
}private void BtnSecondModel_Click(object sender, EventArgs e)
{var second = container.ResolveOptionalNamed<IService>("Second");lblSecondModel.Text = second.Do();
}
private void BtnSecondModel2_Click(object sender, EventArgs e)
{var second = container.ResolveOptionalNamed<ISecondService>("Second");lblSecondModel2.Text = second.SecondDo();
}private void BtnThirdModel_Click(object sender, EventArgs e)
{var third = container.Resolve<ThirdModel>();lblThirdModel.Text = third.Do();
}

点击CTRL+F5,分别点击四个按钮,运行界面如下

注意:

1、对于不使用接口的类可以直接使用RegisterType

2、对于多个继承接口的,不能直接使用RegisterType,要RegisterType方法后再添加Named方法,并指定一个字符串

3、对于一个实体类继承接口,并且继承的接口又有父接口的,可以指定不同的接口类型,使用时可以根据需求选择不同的接口,如按钮SecondModel和SecondModel2选择了不同的接口进行了使用


AutoFac在WinForm中的使用相关推荐

  1. 在winform中从外部拖动节点到树形结构(treeview和listview相互拖动)(一)

    最近一个项目要用到从listview向treeview拖动item,达到从外部拖动图标成为树形结构的一部分,通过查阅资料总结了一些实现方式,分享给大家.这是winform中的例子. 在进行拖放操作之前 ...

  2. C# winform中MouseDoubleClick与DoubleClick的区别

    C# winform中MouseDoubleClick与DoubleClick的区别是 MouseDoubleClick:只能用鼠标双击 DoubleClick:可以按键盘的回车键

  3. C#在WinForm中实现清空指定类型控件的内容

    实现在Winform中递归控件来清空指定类型控件的内容(因为在Winform中,各个控件是有层次关系的,不能简单地依靠遍历this.controls) private void ClearConten ...

  4. winform中构造函数与Form_Load

    不都是用来初始化form中的组件么? public Form()所谓的构造函数. Form_Load所谓的窗体加载函数 完全两码事! WinForm 中的 Form_Load函数和他的构造函数 pub ...

  5. .NET WinForm中给DataGridView自定义ToolTip并设置ToolTip的样式

    .NET WinForm中的DataGridView为程序开发提供了诸多的便利,我们不需要做许多额外的工作就可以获得一些基础功能,例如点击列标题排序.行选择功能.改变列宽和行宽,以及单元格内容的自动T ...

  6. 怎样正确处理WinForm中Listview的ItemCheck事件

    我很少写具体的对象应用心得,这次尝试一下. WinForm中Listview的ItemCheck事件,例子如下:   private void lvwTables_ItemCheck(object s ...

  7. 把控制台程序嵌入到 WinForm 中执行

    我们经常有一些用控制台实现的简单应用,这种应用一般都是一步一步"向导"式执行,在每一步上收集用户的输入,最后得到程序执行的结果.但有些用户可能不喜欢用键盘操作的命令行界面,还是愿意 ...

  8. WinForm中的MVC模式--MVP模式

    本文主要介绍MVC模式在WINFORM中的实现,其实砖家们都称它为MVP模式,小弟E文不太好,真的是记不住那个P怎么拼写的.. MVC模式主要解决的问题就是将表示层和业务层进行分离,在以往做WINFO ...

  9. 在WinForm中通过HTTP协议向服务器端上传文件(转)

    相信用ASP.NET写一个上传文件的网页,大家都会写,但是有没有人想过通过在WinForm中通过HTTP协议上传文件呢? 有些人说要向服务器端上传文件,用FTP协议不是很简单吗?效率又高,为什么还要使 ...

最新文章

  1. Spring + Mybatis 集成原理分析
  2. HDU - 1520 Anniversary party [树形dp]
  3. 一家两位Fellow大满贯!北大谢涛当选ACM Fellow,与胞兄谢源完成会师
  4. 25行代码AC——习题5-7 打印队列(Printer Queue,UVa 12100)——解题报告
  5. JAVA学习资料整理
  6. 可编程的智能小车,100种玩法,让孩子玩出理科编程思维
  7. activemq 实例_在一台计算机上运行多个ActiveMQ实例
  8. SoftGrid教程——综合应用
  9. 算法63----丑数【动态规划】
  10. SparkSql 数据类型转换
  11. Allwinner Tina Linux 如何打开ssh远程登录支持
  12. 企鹅智库发布《2019-2020中国互联网趋势报告》
  13. AWSome Day(上海站)参会记录
  14. Android无埋点数据收集SDK关键技术解析
  15. 数据挖掘面试 150 道题(附答案)
  16. Java 趣事之 a=a++ 和 a=++a
  17. java如何设置网页全屏_java中如何进行全屏方式和窗口方式的转换 详细??
  18. 3.2 二维随机变量的边缘分布
  19. 多少鸿蒙冰心换无间,现阶段法宝及相关道具获取途径汇总
  20. 金豺优化(GJO)算法(含MATLAB代码)

热门文章

  1. 功能测试工具SilkTest
  2. java.lang.IllegalStateException: No value for key [DynamicDataSource@e5f43124] bound to thread
  3. VMware 三种网络模式
  4. html搜索栏热搜效果,CSS3实战开发:百度新闻热搜词特效实战开发_html/css_WEB-ITnose...
  5. Proteus 8 Professional 创建新项目
  6. 【软件推荐】synctoy 本机同步的最好的软件 本机不同目录 本机硬盘与移动硬盘同步
  7. 协方差,协方差矩阵,矩阵特征值
  8. c语言词典课程设计报告,英汉电子词典C语言课程设计
  9. 缩放图像、切割图像、图像类型转换、彩色转黑白、文字水印、图片水印
  10. 博客阅读:图解Transformer(The Illustrated Transformer)