日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

Spring.Net的IOC入门

發布時間:2025/3/20 asp.net 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Spring.Net的IOC入门 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1.構造器注入

namespace Spring.Net {class Program{//構造器注入static void Main(string[] args){IApplicationContext ctx = ContextRegistry.GetContext();//通過容器創建對象IUser _user = ctx.GetObject("User") as IUser;_user.Show();Console.ReadKey();}}public interface IUser{string Name { get; set; }void Show();}public class User : IUser{public string Name { get; set; }public void Show(){Console.WriteLine("我是User的Show方法");}} } <?xml version="1.0" encoding="utf-8" ?> <configuration><!--一定要在緊跟著configuration下面添加--><configSections><!--跟下面Spring.Net節點配置是一一對應關系--><sectionGroup name="spring"><section name="context" type="Spring.Context.Support.ContextHandler, Spring.Core"/><section name="objects" type="Spring.Context.Support.DefaultSectionHandler, Spring.Core" /></sectionGroup></configSections><spring><context><resource uri="config://spring/objects"></resource></context> <objects><!--name 必須要唯一的,type=類的全名稱,所在的程序集--><object name="User" type="Spring.Net.User, Spring.Net"> </object> </objects></spring><startup> <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" /></startup> </configuration>

2.屬性及構造器注入

namespace Spring.Net {class Program{static void Main(string[] args){IApplicationContext ctx = ContextRegistry.GetContext();//通過容器創建對象IUser _user = ctx.GetObject("User") as IUser;IPeople _people = ctx.GetObject("People") as IPeople;Test _test = ctx.GetObject("Test") as Test;Console.WriteLine(_user.Name);Console.WriteLine(_user.Age);Console.WriteLine("--------------------------------------------");Console.WriteLine(_people.Man.Name);Console.WriteLine(_people.Man.Age);Console.WriteLine("--------------------------------------------");Console.WriteLine(_test.Name);Console.WriteLine(_test.Age);Console.ReadKey();}}public interface IUser{string Name { get; set; }int Age { get; set; }void Show();}public class User : IUser{public string Name { get; set; }public int Age { get; set; }public void Show(){Console.WriteLine("我是User的Show方法");}}public interface IPeople{IUser Man { get; set; }}public class People : IPeople{public IUser Man { get; set; }}public class Test{public string Name{get;set;}public int Age{get;set;}public Test(string name, int age){Name = name;Age = age;}} } <?xml version="1.0" encoding="utf-8" ?> <configuration><!--一定要在緊跟著configuration下面添加--><configSections><!--跟下面Spring.Net節點配置是一一對應關系--><sectionGroup name="spring"><section name="context" type="Spring.Context.Support.ContextHandler, Spring.Core"/><section name="objects" type="Spring.Context.Support.DefaultSectionHandler, Spring.Core" /></sectionGroup></configSections><spring><context><resource uri="config://spring/objects"></resource></context> <objects><object name="User" type="Spring.Net.User, Spring.Net"><!--01屬性注入-值類型--><property name="Name" value="Linq"></property><property name="Age" value="25"></property></object><object name="People" type="Spring.Net.People, Spring.Net"><!--02屬性注入-引用類型--><property name="Man" ref="User"></property></object><object name="Test" type="Spring.Net.Test, Spring.Net"><!--03構造函數注入--><constructor-arg name="name" value="config配置"></constructor-arg><constructor-arg name="age" value="25"></constructor-arg></object></objects></spring><startup> <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" /></startup> </configuration>

?

3.方法注入

namespace Spring.Net {class Program{static void Main(string[] args){IApplicationContext ctx = ContextRegistry.GetContext(); ObjectFactory dao = (ObjectFactory)ctx.GetObject("objectFactory");//查詢方法注入//查詢方法注入就利用了這些功能。個人感覺查詢方法注入類似抽象工廠,//為之不同的是,可以不用寫抽象的實現代碼,通過配置文件動態的切換組件。 dao.CreatePersonDao().Save();//事件注入Door door = (Door)ctx.GetObject("door");door.OnOpen("Opening!");Console.WriteLine();Console.Read();}}public abstract class ObjectFactory{//或者可以是一個虛方法 public abstract PersonDao CreatePersonDao();}public class PersonDao{public void Save(){Console.WriteLine("保存數據");}}//先定義一個委托public delegate string OpenHandler(string arg);public class Door{public event OpenHandler OpenTheDoor;public void OnOpen(string arg){//調用事件if (OpenTheDoor != null){Console.WriteLine(OpenTheDoor(arg));}}}public class Men{public string OpenThisDoor(string arg){return "參數是:" + arg;}} } <?xml version="1.0" encoding="utf-8" ?> <configuration><!--一定要在緊跟著configuration下面添加--><configSections><!--跟下面Spring.Net節點配置是一一對應關系--><sectionGroup name="spring"><section name="context" type="Spring.Context.Support.ContextHandler, Spring.Core"/><section name="objects" type="Spring.Context.Support.DefaultSectionHandler, Spring.Core" /></sectionGroup></configSections><spring><context><resource uri="config://spring/objects"></resource></context> <objects><!--查詢方法--><object id="personDao" type="Spring.Net.PersonDao, Spring.Net" singleton="false"/><object id="objectFactory" type="Spring.Net.ObjectFactory, Spring.Net"><lookup-method name="CreatePersonDao" object="personDao"/></object><!--事件注入--><object id="men" type="Spring.Net.Men, Spring.Net"><listener event="OpenTheDoor" method="OpenThisDoor"><ref object="door"/></listener></object><object id="door" type="Spring.Net.Door, Spring.Net" /></objects></spring><startup> <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" /></startup> </configuration>

?

轉載于:https://www.cnblogs.com/lgxlsm/p/5410944.html

總結

以上是生活随笔為你收集整理的Spring.Net的IOC入门的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。