Spring.Net学习笔记-方法注入
Posted Kimisme
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring.Net学习笔记-方法注入相关的知识,希望对你有一定的参考价值。
一、开发环境
系统:win10
编译器:VS2013
二、涉及程序集
Spring.Core.dll 1.3.1
Common.Logging.dll
三、开发过程
1.项目结构
2.编写Mobile.cs
namespace SpringNetMethodDi { public abstract class Mobile { //可以是virtual public abstract SendTool GetSendTool(); } }
3.编写SendTool.cs
namespace SpringNetMethodDi { public class SendTool { public void WeChat() { Console.WriteLine("我是Kimisme,正在用微信发信息"); } } }
4.编写RealOp.cs
namespace SpringNetMethodDi { public class RealOp { public virtual string Buy(string goods) { return goods + "是昨天的剩下的"; } } }
5.编写SuperMarket.cs
namespace SpringNetMethodDi { public class SuperMarket : IMethodReplacer { public object Implement(object target, System.Reflection.MethodInfo method, object[] arguments) { string value = arguments[0].ToString(); return value + "是今天的面包"; } } }
6.编写Door.cs
namespace SpringNetMethodDi { 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)); } } } }
7.编写Men.cs
namespace SpringNetMethodDi { public class Men { public string OpenThisDoor(string arg) { return "参数是:" + arg; } } }
8.编写App.config
<?xml version="1.0" encoding="utf-8" ?> <configuration> <configSections> <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 xmlns="http://www.springframework.net"> <!--01抽象方法注入--> <object name="sendTool" type="SpringNetMethodDi.SendTool,SpringNetMethodDi"></object> <object name="mobile" type="SpringNetMethodDi.Mobile,SpringNetMethodDi"> <lookup-method name="GetSendTool" object="sendTool"/> </object> <!--02替换方法--> <object name="replaceValue" type="SpringNetMethodDi.SuperMarket,SpringNetMethodDi"></object> <object name="realOp" type="SpringNetMethodDi.RealOp,SpringNetMethodDi"> <replaced-method name="Buy" replacer="replaceValue"> <arg-type match="String"/> </replaced-method> </object> <!--03事件注入--> <object id="door" type="SpringNetMethodDi.Door,SpringNetMethodDi"></object> <object id="men" type="SpringNetMethodDi.Men,SpringNetMethodDi"> <listener event="OpenTheDoor" method="OpenThisDoor"> <ref object="door"/> </listener> </object> </objects> </spring> <startup> <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" /> </startup> </configuration>
9.控制台代码
namespace SpringNetMethodDi { class Program { static void Main(string[] args) { IApplicationContext context = ContextRegistry.GetContext(); Mobile mobile = context.GetObject("mobile") as Mobile; mobile.GetSendTool().WeChat(); RealOp op = context.GetObject("realOp") as RealOp; Console.WriteLine(op.Buy("面包")); Door door = context.GetObject("door") as Door; door.OnOpen("Opening"); Console.ReadKey(); } } }
四、备注
今天又掉进坑了,具体什么坑看问题汇总
以上是关于Spring.Net学习笔记-方法注入的主要内容,如果未能解决你的问题,请参考以下文章