AutoFac在WinForm中的使用
新建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中的使用相关推荐
- 在winform中从外部拖动节点到树形结构(treeview和listview相互拖动)(一)
最近一个项目要用到从listview向treeview拖动item,达到从外部拖动图标成为树形结构的一部分,通过查阅资料总结了一些实现方式,分享给大家.这是winform中的例子. 在进行拖放操作之前 ...
- C# winform中MouseDoubleClick与DoubleClick的区别
C# winform中MouseDoubleClick与DoubleClick的区别是 MouseDoubleClick:只能用鼠标双击 DoubleClick:可以按键盘的回车键
- C#在WinForm中实现清空指定类型控件的内容
实现在Winform中递归控件来清空指定类型控件的内容(因为在Winform中,各个控件是有层次关系的,不能简单地依靠遍历this.controls) private void ClearConten ...
- winform中构造函数与Form_Load
不都是用来初始化form中的组件么? public Form()所谓的构造函数. Form_Load所谓的窗体加载函数 完全两码事! WinForm 中的 Form_Load函数和他的构造函数 pub ...
- .NET WinForm中给DataGridView自定义ToolTip并设置ToolTip的样式
.NET WinForm中的DataGridView为程序开发提供了诸多的便利,我们不需要做许多额外的工作就可以获得一些基础功能,例如点击列标题排序.行选择功能.改变列宽和行宽,以及单元格内容的自动T ...
- 怎样正确处理WinForm中Listview的ItemCheck事件
我很少写具体的对象应用心得,这次尝试一下. WinForm中Listview的ItemCheck事件,例子如下: private void lvwTables_ItemCheck(object s ...
- 把控制台程序嵌入到 WinForm 中执行
我们经常有一些用控制台实现的简单应用,这种应用一般都是一步一步"向导"式执行,在每一步上收集用户的输入,最后得到程序执行的结果.但有些用户可能不喜欢用键盘操作的命令行界面,还是愿意 ...
- WinForm中的MVC模式--MVP模式
本文主要介绍MVC模式在WINFORM中的实现,其实砖家们都称它为MVP模式,小弟E文不太好,真的是记不住那个P怎么拼写的.. MVC模式主要解决的问题就是将表示层和业务层进行分离,在以往做WINFO ...
- 在WinForm中通过HTTP协议向服务器端上传文件(转)
相信用ASP.NET写一个上传文件的网页,大家都会写,但是有没有人想过通过在WinForm中通过HTTP协议上传文件呢? 有些人说要向服务器端上传文件,用FTP协议不是很简单吗?效率又高,为什么还要使 ...
最新文章
- Spring + Mybatis 集成原理分析
- HDU - 1520 Anniversary party [树形dp]
- 一家两位Fellow大满贯!北大谢涛当选ACM Fellow,与胞兄谢源完成会师
- 25行代码AC——习题5-7 打印队列(Printer Queue,UVa 12100)——解题报告
- JAVA学习资料整理
- 可编程的智能小车,100种玩法,让孩子玩出理科编程思维
- activemq 实例_在一台计算机上运行多个ActiveMQ实例
- SoftGrid教程——综合应用
- 算法63----丑数【动态规划】
- SparkSql 数据类型转换
- Allwinner Tina Linux 如何打开ssh远程登录支持
- 企鹅智库发布《2019-2020中国互联网趋势报告》
- AWSome Day(上海站)参会记录
- Android无埋点数据收集SDK关键技术解析
- 数据挖掘面试 150 道题(附答案)
- Java 趣事之 a=a++ 和 a=++a
- java如何设置网页全屏_java中如何进行全屏方式和窗口方式的转换 详细??
- 3.2 二维随机变量的边缘分布
- 多少鸿蒙冰心换无间,现阶段法宝及相关道具获取途径汇总
- 金豺优化(GJO)算法(含MATLAB代码)
热门文章
- 功能测试工具SilkTest
- java.lang.IllegalStateException: No value for key [DynamicDataSource@e5f43124] bound to thread
- VMware 三种网络模式
- html搜索栏热搜效果,CSS3实战开发:百度新闻热搜词特效实战开发_html/css_WEB-ITnose...
- Proteus 8 Professional 创建新项目
- 【软件推荐】synctoy 本机同步的最好的软件 本机不同目录 本机硬盘与移动硬盘同步
- 协方差,协方差矩阵,矩阵特征值
- c语言词典课程设计报告,英汉电子词典C语言课程设计
- 缩放图像、切割图像、图像类型转换、彩色转黑白、文字水印、图片水印
- 博客阅读:图解Transformer(The Illustrated Transformer)