免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
Spring.NET教程(四)

創(chuàng)建對象一般有3中方式:1.構造器創(chuàng)建。2.靜態(tài)工廠創(chuàng)建。3.實例工廠創(chuàng)建。

多數(shù)情況下,容器會根據(jù)對象定義中的type屬性值去直接調用響應類型的某個構造器。另外,容器也可以調用工廠方法來創(chuàng)建對象,這時type屬性的值就應該是包含工廠方法的類型(注:而不是要創(chuàng)建的類型,但通過該對象定義的名稱獲取的是由工廠方法所創(chuàng)建的對象)。工廠方法的產(chǎn)生對象可以是工廠方法所在的類型,也可以是其他類型(注:很多情況下工廠方法位于單獨的類型中),這無關緊要。

一、通過構造器創(chuàng)建對象、

通過構造器創(chuàng)建隊形需要滿足這幾個條件:1.指明對象類型type=”類全名,程序集名”

2.有一個無參的構造函數(shù)或者默認構造函數(shù)。

  1. <!--構造器-->
  2. <object id="PersonDao" type="Dao.PersonDao, Dao">
  3. </object>
  1. /// <summary>
  2. /// 構造器創(chuàng)建
  3. /// </summary>
  4. static void CreateByConstructor()
  5. {
  6. string[] XMLFiles = new string[]
  7. {
  8. "assembly://CreateObjects/CreateObjects/Objects.xml"
  9. };
  10. IApplicationContext context = new XmlApplicationContext(XMLFiles);
  11. IObjectFactory factory = (IObjectFactory)context;
  12. Console.Write(factory.GetObject("PersonDao").ToString());
  13. }

嵌套類型對象的創(chuàng)建需要“+”號來連接被嵌套的類型。如果在PersonDao中嵌套了類型Person

  1. <!--嵌套類型-->
  2. <object id="Person" type="Dao.PersonDao+Person, Dao">
  3. </object>
  1. /// <summary>
  2. /// 嵌套類型創(chuàng)建
  3. /// </summary>
  4. static void CreateNested()
  5. {
  6. string[] XMLFiles = new string[]
  7. {
  8. "assembly://CreateObjects/CreateObjects/Objects.xml"
  9. };
  10. IApplicationContext context = new XmlApplicationContext(XMLFiles);
  11. IObjectFactory factory = (IObjectFactory)context;
  12. Console.Write(factory.GetObject("Person").ToString());
  13. }

二、靜態(tài)工廠創(chuàng)建

使用靜態(tài)工廠創(chuàng)建對象需要配置factory-mothod屬性

  1. <!--靜態(tài)工廠-->
  2. <object id="StaticObjectsFactory" type="DaoFactory.DataAccess, DaoFactory" factory-method="CreatePersonDao">
  3. </object>
  1. /// <summary>
  2. /// 靜態(tài)工廠創(chuàng)建
  3. /// </summary>
  4. static void CreateByStaticFactory()
  5. {
  6. string[] XMLFiles = new string[]
  7. {
  8. "assembly://CreateObjects/CreateObjects/Objects.xml"
  9. };
  10. IApplicationContext context = new XmlApplicationContext(XMLFiles);
  11. IObjectFactory factory = (IObjectFactory)context;
  12. Console.Write(factory.GetObject("StaticObjectsFactory").ToString());
  13. }

三、使用實例工廠創(chuàng)建對象

使用實例工廠創(chuàng)建隊形需要先定義一個工廠,然后設factory-object和factory-method屬性,且滿足實例工廠方法所在的對象必須也要配置在同一容器(或父容器)中 和 對象定義就不能包含type屬性

  1. <!--實例工廠-->
  2. <!--工廠-->
  3. <object id="instanceObjectsFactory" type="DaoFactory.DataAccess, DaoFactory">
  4. </object>
  5. <!--創(chuàng)建的對象-->
  6. <object id="instancePersonDao" factory-method="CreateInstance" factory-object="instanceObjectsFactory">
  7. </object>
  1. /// <summary>
  2. /// 實例工廠創(chuàng)建
  3. /// </summary>
  4. static void CreateByInstanceFactory()
  5. {
  6. string[] xmlFiles = new string[]
  7. {
  8. "assembly://CreateObjects/CreateObjects/Objects.xml"
  9. };
  10. IApplicationContext context = new XmlApplicationContext(xmlFiles);
  11. IObjectFactory factory = (IObjectFactory)context;
  12. Console.WriteLine(factory.GetObject("instancePersonDao").ToString());
  13. }

四、泛型類型的創(chuàng)建

泛型類型的創(chuàng)建比較類型于以上幾種創(chuàng)建,可以有通過構造器創(chuàng)建,還可以通過靜態(tài)或者工廠創(chuàng)建,但是設置type屬性的時候要注意:左尖括號<要替換成字符串”<”,因為在XML中左尖括號會被認為是小于號。

  1. <!--創(chuàng)建泛型-->
  2. <object id="genericClass" type="Dao.GenericClass<int>, Dao" >
  3. </object>    
  1. /// <summary>
  2. /// 泛型創(chuàng)建
  3. /// </summary>
  4. static void CreateByGenericClass()
  5. {
  6. string[] xmlFiles = new string[]
  7. {
  8. "assembly://CreateObjects/CreateObjects/Objects.xml"
  9. };
  10. IApplicationContext context = new XmlApplicationContext(xmlFiles);
  11. IObjectFactory factory = (IObjectFactory)context;
  12. Console.WriteLine(factory.GetObject("genericClass").ToString());
  13. }

代碼連接:https://download.csdn.net/download/wjgwrr/10429544

本站僅提供存儲服務,所有內容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權內容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
Spring.NET教程(三)
攔截短信并轉發(fā)到指定號碼
深入掌握JMS(十二):MDB
抽象工廠概述
BEA WebLogic Server8.1 JMS入門
SQLiteOpenHelper 文件路徑
更多類似文章 >>
生活服務
分享 收藏 導長圖 關注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服