博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Spring.Net学习笔记三(对象的创建)
阅读量:5921 次
发布时间:2019-06-19

本文共 3338 字,大约阅读时间需要 11 分钟。

   本文接下来要阐述的是IOC对象怎么创建,主要有3种方法:

   第一种:构造器创建(嵌套类型对象的创建需要用“+”号来连接被嵌套的类型。如果在PersonDao中嵌套了类型Person)

       类库代码:

       

1 namespace Dao 2 { 3     public interface IPersonDao 4     { 5         void Save(); 6     } 7     public class PersonDao : IPersonDao 8     { 9         public void Save()10         {11             Console.WriteLine("保存 Person");12         }13     }14 15     public class PersonDao1 : IPersonDao16     {17         public void Save()18         {19             Console.WriteLine("保存 Person1");20         }21     }22 }

配置文件还是跟以前一样:

1  
2
3
An example that demonstrates simple IoC features.
4
5
6 7
1  string[] xmlFiles = new string[] 2             {3                 "assembly:../../../../Objects.xml"4             };5             IApplicationContext context = new XmlApplicationContext(xmlFiles);6             IObjectFactory factory = (IObjectFactory)context;7             Console.WriteLine(factory.GetObject("personDao").ToString());

不知道为什么路径是这样而不是../../这样的,望有高手看到能解决我心中疑问。

第二中:静态工厂即简单工厂创建对象

   

1   public class StaticObjectsFactory2     {3         public static IPersonDao CreateInstance()4         {5             return new PersonDao1();6         }7     }

 调用:

 

1  IApplicationContext context = new XmlApplicationContext(xmlFiles);2             IObjectFactory factory = (IObjectFactory)context;3             Console.WriteLine(factory.GetObject("staticObjectsFactory").ToString());

 

第三:使用实例工厂创建对象

        使用实例工厂创建对象需要先定义一个工厂,然后设置factory-object和factory-method属性,且满足 实例工厂方法所在的对象必须也要配置在同一容器(或父容器)中 和 对象定义就不能包含type属性

       类库代码:

       

1  public class StaticObjectsFactory 2     { 3         public IPersonDao CreateInstance() 4         { 5             return new instanceObjectsFactory().CreateInstance(); 6         } 7     } 8  9  public class instanceObjectsFactory 10     {11         public IPersonDao CreateInstance()12         {13             return new PersonDao1();14         }15     }

     

1 
2
3
An example that demonstrates simple IoC features.
4
5
6
7

调用:

1 string[] xmlFiles = new string[]  2             { 3                 "assembly:../../../../Objects.xml" 4             }; 5             IApplicationContext context = new XmlApplicationContext(xmlFiles); 6             IObjectFactory factory = (IObjectFactory)context; 7             IPersonDao dao = (IPersonDao)factory.GetObject("instancePersonDao"); 8             if (dao != null) 9             {10                 dao.Save();11                 Console.WriteLine("我是IoC方法");12                 Console.ReadKey();13             }

第四、泛型类型的创建

1  public class Pig
2 { 3 public void Save() 4 { 5 Console.WriteLine(1); 6 } 7 } 8 9
10 11 string[] xmlFiles = new string[] 12             {13                 "assembly:../../../../Objects.xml"14             };15 IApplicationContext context = new XmlApplicationContext(xmlFiles);16 IObjectFactory factory = (IObjectFactory)context;17 object obj = factory.GetObject("pig");18 19 Console.WriteLine(obj.ToString());20 Console.ReadLine();

泛型类型的创建比较类型于以上几种创建方式,可以有通过构造器创建,还可以通过静态或者实例工厂创建。但是设置type属性的时候要注意:左尖括号<要替换成字符串“&lt;”,因为在XML中左尖括号会被认为是小于号。

     

转载于:https://www.cnblogs.com/wangyhua/p/ioc2.html

你可能感兴趣的文章
PyCharm安装及调试
查看>>
Android自定义XML属性
查看>>
C#判断WebService接口是否可用
查看>>
分享一个Eclipse代码配色教程与颜色主题插件
查看>>
deque简单解析
查看>>
提高我们微博互粉的效率,使用"一键关注"Chrome扩展程序
查看>>
Windows64位安装CPU版TensorFlow
查看>>
javascript reduce
查看>>
String 类的实现(2)引用计数与写时拷贝
查看>>
ubuntu 下 apache+tomcat整合_(mod-jk方法)[转]
查看>>
Flex数据交互之Remoting[转]
查看>>
转 Android之项目推荐使用的第三方库,有助于快速开发,欢迎各位网友补充
查看>>
commands - `ls`
查看>>
html 5 video 和audio属性
查看>>
编译器自动生成默认构造函数的四种情况
查看>>
LeetCode-反转整数
查看>>
01-多线程及异步委托
查看>>
动态规划 - 钢条切割
查看>>
MySql多条SQL语句的批量处理
查看>>
uCOS-II中的任务切换-图解多种任务调度时机与问题
查看>>