ASP.NET Spring.Net 入门2 简单入门示例--属性与构造函数注入

来源:互联网 发布:qq飞车网络异常 编辑:程序博客网 时间:2024/06/07 11:11

AdoNetUserInfoDal

using System;namespace Spring.Net{    public class AdoNetUserInfoDal : IUserInfoDal    {        public AdoNetUserInfoDal(string name, UserInfo userInfo)        {            Name = name;            UserInfo = userInfo;        }        public UserInfo UserInfo { get; set; }        public string Name { get; set; }        public void Show()        {            Console.WriteLine("I'm AdoNet Dal ,Inject Name :Name=" + Name);            Console.WriteLine("UserInfo ,Name=" + UserInfo.Name + " Age=" + UserInfo.Age);        }    }}

App.config

<?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>  <startup>    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />  </startup>  <!--Spring.Net节点配置-->  <spring>    <context>      <!--容器配置-->      <resource uri="config://spring/objects"/>    </context>    <objects xmlns="http://www.springframework.net">      <!--这里放容器里面的所有节点-->      <description>An  example that demonstrates simple IoC features.</description>      <!--name 必须要唯一的,type=类的全名称,所在的程序集-->      <object name="UserInfoDal" type="Spring.Net.EFUserInfoDal, Spring.Net">        <property name="Name" value="John"/>        <!--ref指向下面的属性注入-->        <property name="UserInfo" ref="UserInfo"/>      </object>      <!--构造函数注入-->      <object name="UserInfoDal2" type="Spring.Net.AdoNetUserInfoDal, Spring.Net">        <constructor-arg index="0" value="John"/>        <constructor-arg index="1" ref="UserInfo"/>      </object>      <!--属性注入-->      <object name="UserInfo" type="Spring.Net.UserInfo, Spring.Net">        <property name="Name" value="Lili"/>        <property name="Age" value="15"/>      </object>    </objects>  </spring></configuration>

EFUserInfoDal

using System;namespace Spring.Net{    public class EFUserInfoDal : IUserInfoDal    {        public EFUserInfoDal()        {        }        public UserInfo UserInfo { get; set; }        public string Name { get; set; }        public void Show()        {            Console.WriteLine("I'm EF Dal,inject :Name=" + Name);            Console.WriteLine("UserInfo ,Name=" + UserInfo.Name + " Age=" + UserInfo.Age);        }    }}

IUserInfoDal

namespace Spring.Net{    public interface IUserInfoDal    {        UserInfo UserInfo { get; set; }        string Name { get; set; }        void Show();    }}

Program

using Spring.Context;using Spring.Context.Support;using System;namespace Spring.Net{    class Program    {        static void Main(string[] args)        {            //第一步,引用Spring.Net程序集 Spring.Core.dll 和 Common.Logging.dll            //第二步,添加Spring.Net配置节点            //第三步,配置object节点            //第四步,创建spring容器上下文            IApplicationContext ctx = ContextRegistry.GetContext();            //第五步,通过容器创建对象            IUserInfoDal efDal = ctx.GetObject("UserInfoDal") as IUserInfoDal;            efDal.Show();            IUserInfoDal adoDal = ctx.GetObject("UserInfoDal2") as IUserInfoDal;            adoDal.Show();            Console.ReadKey();        }    }}

UserInfo

namespace Spring.Net{    public class UserInfo    {        public string Name { get; set; }        public int Age { get; set; }    }}

项目参考地址:
http://www.cnblogs.com/han1982/p/4177850.html

源码:
https://github.com/xiexiexin/SpringNetSample/Test2

0 0
原创粉丝点击