spring.net 对象创建

简介: 多数情况下,容器会根据对象定义中的type属性值去直接调用相应类型的某个构造器。另外,还可以调用工厂方法来创建对象。(Spring.net中文手册) 实例参考。 (1)       Order类 namespace IocTest.

多数情况下,容器会根据对象定义中的type属性值去直接调用相应类型的某个构造器。另外,还可以调用工厂方法来创建对象。(Spring.net中文手册)

实例参考。

(1)       Order

namespace IocTest.Entities

{

    public class Order

    {

        public int Unid { get; set; }

        public string OrderName { get; set; }

        public string UserId { get; set; }

 

        public override string ToString()

        {

            return OrderName + ":" + Unid;           

        }

    }

}

 

(一)   构造器

使用构造器时,不要求对象的特定类型,只要声明对象的类型(assembly)就可以了。方法如下:

1.指明对象类型 type="类全名,程序集名"

2.有一个无参的构造函数或者默认构造函数。

 

Xml

<object id="orderConstructor" type="IocTest.Entities.Order"></object>

 

Test

[Test(Description="constructor test")]

public void TestOrderConstructor()

{

    Order oo = XmlFactory.GetObject("orderConstructor") as Order;

    oo.OrderName = "constructor create Test order name";

 

    Console.WriteLine(oo.ToString());

}

 

 

(二)   静态工厂

使用静态工厂方法创建对象时,除了要将对象定义的type属性设为包含静态工厂方法的类型外,还要设置一个名为factory-method的属性来指定静态工厂方法的名称。(Spring.net中文手册)

 

     Xml

<!-- static facotry order-->

  <object id="OrderFactoryStatic" type="IocTest.Entities.OrderFactory"

          factory-method="CreateStaticInstance">

  </object>

此对象type指定的是静态工厂类型,此对象的作用即为静态创建Order

     OrderFactory

namespace IocTest.Entities

{

    public class OrderFactory

    {

        public static Order CreateStaticInstance()

        {

            return new Order();

        }

 

        public Order CreateInstance()

        {

            return new Order();

        }

    }

}

 

     Test

[Test(Description="static factory")]

public void TestStaticFactory()

{

     Order oo = XmlFactory.GetObject("OrderFactoryStatic") as Order;

    oo.OrderName = "static factory create Test order name";

 

     Console.WriteLine(oo.ToString());

}

 

(三)   实例工厂

通过实例工厂方法创建对象与通过静态工厂方法创建对象的配置方式类似。此时,实例工厂方法所在的对象必须也要配置在同一容器(或父容器)中。

如果要通过实例工厂方法创建对象,对象定义就不能包含type属性,而要用factory-object属性引用工厂方法所在的对象;注意,该属性值必须是包含工厂方法的对象的名称,且该对象必须定义在当前容器或父容器中。工厂方法的方法名则通过factory-method属性指定。(Spring.net中文手册)

 

     Xml

<!-- factory order instance-->

  <object id="OrderFactorySample" type="IocTest.Entities.OrderFactory">   

  </object>

  <object id="OrderFactoryInstance"  type="IocTest.Entities.OrderFactory"

           factory-method="CreateInstance"

           factory-object="OrderFactorySample">

</object>

 

     Test

[Test(Description = "instance factory test")]

public void TestInstanceFactory()

{

   Order oo = XmlFactory.GetObject("OrderFactoryInstance") as Order;

   oo.OrderName = "instance factory create Test order name";

 

   Console.WriteLine(oo.ToString());

}

 

(四)   泛型类型

与普通对象相同。但要注意的是左尖括号要以&lt;来代替,右尖括号不用。

Score<T>

namespace IocTest.Entities

{

    public class Score<T>

    {

        public int Unid { get; set; }

        public List<T> ScoreList { get; set; }

 

        public override string ToString()

        {

            string strReturn = string.Empty;

            foreach (T t in ScoreList)

                strReturn += t.ToString();

            return strReturn;

        }

    }

}

 

     Xml

  <!--generic test-->

  <object id="Score" type="IocTest.Entities.Score&lt;int>">   

  </object>

 

     Test

[Test]

public void TestGenericScore()

{

    Score<int> cc=XmlFactory.GetObject("Score") as Score<int>;

    List<int> _list = new List<int>() { 11,2,66,9,0};

    cc.ScoreList = _list;

 

Console.WriteLine(cc.ToString());

}

 

 转载请注明:博客园。

博客园大道至简

http://www.cnblogs.com/jams742003/

转载请注明:博客园

目录
相关文章
|
存储 消息中间件 API
FreeRTOS入门教程(堆和栈)
FreeRTOS入门教程(堆和栈)
585 0
|
SQL 关系型数据库 MySQL
实时计算 Flink版产品使用合集之idea本地测试代码,要增大 Flink CDC 在本地 IDEA 测试环境中的内存大小如何解决
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
233 1
|
存储 SQL 测试技术
基于SpringBoot+Vue交通管理在线服务系统的开发(源码+部署说明+演示视频+源码介绍+lw)(2)
基于SpringBoot+Vue交通管理在线服务系统的开发(源码+部署说明+演示视频+源码介绍+lw)
229 2
|
前端开发 JavaScript 开发者
Angular与Webpack协同优化:打造生产级别的打包配置——详解从基础设置到高级代码拆分和插件使用
【8月更文挑战第31天】在现代前端开发中,优化应用性能和加载时间至关重要,尤其是对于使用Angular框架的项目。本文通过代码示例详细展示了如何配置Webpack,以实现生产级别的打包优化。从基础配置到生产环境设置、代码拆分,再到使用加载器与插件,每个步骤都旨在提升应用效率,确保快速加载和稳定运行。通过这些配置,开发者能更好地控制资源打包,充分发挥Webpack的强大功能。
500 0
|
11月前
|
运维 Devops 应用服务中间件
自动化运维的利剑:Ansible在现代IT架构中的应用
【10月更文挑战第42天】本文旨在揭示自动化运维工具Ansible如何革新现代IT架构,通过简化配置管理和部署流程,提升效率和可靠性。我们将探索Ansible的核心功能、语言特性以及其在DevOps文化中的角色。文章还将展示如何借助Ansible构建模块化和可重用的配置代码,实现快速迭代与部署,并确保系统一致性。通过阅读本文,运维人员将了解如何利用Ansible优化日常任务,加速产品上线速度,同时提高系统的稳健性。
194 5
|
Java Maven
java运行jar包提示 “XXX中没有主清单属性”,配置maven插件
java运行jar包提示 “XXX中没有主清单属性”,配置maven插件
283 0
|
前端开发 JavaScript Java
JPOM尝试
JPOM 尝试
346 2
|
消息中间件 NoSQL 关系型数据库
倚天测评|倚天云服务器初次体验
随着云计算技术的快速发展,云服务器在各个领域得到了广泛应用。其中,倚天云服务器以其独特的CIPU架构和倚天710处理器的优势,引起了广大用户的关注。本测评报告旨在通过对倚天云服务器的实例使用、业务部署、性能测试和迁移体验等方面进行评估。
|
前端开发 小程序 JavaScript
uniapp手写滚动选择器
【8月更文挑战第6天】
199 4
|
负载均衡 JavaScript 应用服务中间件
手把手教你玩转 Nginx 配置
作为静态服务器、反代和负载均衡器,Nginx 因高性能和灵活性广泛使用。
599 5