小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

Spring.Net的IOC入門(mén)

 黃金屋1 2019-05-26

1.構(gòu)造器注入

復(fù)制代碼
namespace Spring.Net
{
    class Program
    {
        //構(gòu)造器注入
        static void Main(string[] args)
        {
            IApplicationContext ctx = ContextRegistry.GetContext();
            //通過(guò)容器創(chuàng)建對(duì)象
            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方法");
        }
    }
}
復(fù)制代碼
復(fù)制代碼
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <!--一定要在緊跟著configuration下面添加-->
  <configSections>
    <!--跟下面Spring.Net節(jié)點(diǎn)配置是一一對(duì)應(yīng)關(guān)系-->
    <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=類(lèi)的全名稱(chēng),所在的程序集-->
      <object name="User" type="Spring.Net.User, Spring.Net">  </object> 
    </objects>
  </spring>
  
    <startup> 
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
    </startup>
</configuration>
復(fù)制代碼

2.屬性及構(gòu)造器注入

復(fù)制代碼
namespace Spring.Net
{
    class Program
    {
        static void Main(string[] args)
        {
            IApplicationContext ctx = ContextRegistry.GetContext();
            //通過(guò)容器創(chuàng)建對(duì)象
            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;
        }
    }
}
復(fù)制代碼
復(fù)制代碼
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <!--一定要在緊跟著configuration下面添加-->
  <configSections>
    <!--跟下面Spring.Net節(jié)點(diǎn)配置是一一對(duì)應(yīng)關(guān)系-->
    <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屬性注入-值類(lèi)型-->
        <property name="Name" value="Linq"></property>
        <property name="Age" value="25"></property>
      </object>

      <object name="People" type="Spring.Net.People, Spring.Net">
        <!--02屬性注入-引用類(lèi)型-->
        <property name="Man" ref="User"></property>
      </object>

      <object name="Test" type="Spring.Net.Test, Spring.Net">
        <!--03構(gòu)造函數(shù)注入-->
        <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>
復(fù)制代碼

 

3.方法注入

復(fù)制代碼
namespace Spring.Net
{
    class Program
    {
        static void Main(string[] args)
        {
            IApplicationContext ctx = ContextRegistry.GetContext();   
            ObjectFactory dao = (ObjectFactory)ctx.GetObject("objectFactory");
            //查詢(xún)方法注入
            //查詢(xún)方法注入就利用了這些功能。個(gè)人感覺(jué)查詢(xún)方法注入類(lèi)似抽象工廠,
            //為之不同的是,可以不用寫(xiě)抽象的實(shí)現(xiàn)代碼,通過(guò)配置文件動(dòng)態(tài)的切換組件。
            dao.CreatePersonDao().Save();
            //事件注入
            Door door = (Door)ctx.GetObject("door");
            door.OnOpen("Opening!");
            Console.WriteLine();
            Console.Read();
        }

    }

    public abstract class ObjectFactory
    {
        //或者可以是一個(gè)虛方法    
        public abstract PersonDao CreatePersonDao();
    }

    public class PersonDao
    {
        public void Save()
        {
            Console.WriteLine("保存數(shù)據(jù)");
        }
    }

    //先定義一個(gè)委托
    public delegate string OpenHandler(string arg);

    public class Door
    {
        public event OpenHandler OpenTheDoor;

        public void OnOpen(string arg)
        {
            //調(diào)用事件
            if (OpenTheDoor != null)
            {
                Console.WriteLine(OpenTheDoor(arg));
            }
        }
    }

    public class Men
    {
        public string OpenThisDoor(string arg)
        {
            return "參數(shù)是:" + arg;
        }
    }
}
復(fù)制代碼
復(fù)制代碼
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <!--一定要在緊跟著configuration下面添加-->
  <configSections>
    <!--跟下面Spring.Net節(jié)點(diǎn)配置是一一對(duì)應(yīng)關(guān)系-->
    <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>
      <!--查詢(xún)方法-->
      <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>
復(fù)制代碼

 

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶(hù)發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶(hù) 評(píng)論公約

    類(lèi)似文章 更多