|
|
作者: |
|
2013/7/16 0:06:52 |
1楼: |
Delphi2010开始支持反射(Enhanced RTTI)和自定义特性(Attribute),在一些场景中可以简化代码,比如ORM(对象关系映射),Configuration,Dependency Injection(依赖注入)等等。
比如现在有一个ORM框架,它定义了几个特性类:EntityAttribute, TableAttribute, ColumnAttribute (它们都是System.TCustomAttribute的子类,Attribute后缀可以省略)。示例:
[Entity] // 表示这是一个实体对象 [Table('Persons')] // 表示TPerson实例对应的数据库表名 TPerson = class private [Column('Name')] // 对应的字段名 fName: string; [Column('BirthDate')] fBirthDate: TDate; end; 这样就很方便定义了业务类TPerson和数据库的映射方式,而ORM框架则可以通过反射机制或的这些信息并生成对应的SQL语句,创建、读取、修改和删除业务对象了。
回到你的问题,Inject实际上是InjectAttribute,它是告诉Spring4D的依赖注入容器当前所需要的IMakeNoise服务的实例名称("Dog")。
其他就不展开了。。
----------------------------------------------
|
作者: |
|
2013/7/16 7:56:26 |
2楼: |
看来我也要好好补习下反射等新内容了!
----------------------------------------------
-
|
|