t_baseproperty

合集下载

property的定义和用法 -回复

property的定义和用法 -回复

property的定义和用法-回复Property(属性)是程序设计中的概念之一,它用于描述一个对象或数据的特性或特征。

在许多编程语言中,属性是用来描述对象的特征和状态的方法,它可以存储和访问对象的数据。

本文将从属性的定义出发,详细介绍属性的概念、类型以及在不同编程语言中的用法,并给出一些实际示例。

一、属性的定义属性是程序中对数据的抽象和封装,用于描述对象的特征或状态。

它不仅仅是数据的存储位置,更是对数据操作方式的一种抽象。

属性可以分为实例属性和类属性两种类型。

实例属性(Instance Properties)是指属于类实例化后的对象的属性。

每个对象在创建后都会有自己独立的一份属性副本,互不干扰。

例如,当我们创建一个Person类的实例时,可以设置该对象的name和age属性来描述一个人的姓名和年龄。

这些属性只对当前实例有效,不会影响其他实例。

类属性(Class Properties)是指属于类本身的属性。

类属性在所有的类实例之间共享,当一个实例更改了类属性的值时,其他实例也会受到影响。

例如,给Person类设置一个count属性,用于统计当前已创建的Person对象的个数,每次创建新对象时,count属性的值都会自增。

二、属性的类型属性可以分为可读写属性和只读属性。

其中,可读写属性允许在对象创建后通过访问器方法(getter和setter)对其进行读取和修改;而只读属性只允许读取,不允许修改。

1. 可读写属性(Read-Write Properties):可读写属性提供get和set两个方法来访问和修改属性的值。

get方法用于读取属性的值,set方法用于修改属性的值。

例如,对于一个Person对象的age属性,可以通过getAge()方法获取该属性的值,通过setAge()方法设置该属性的值。

2. 只读属性(Read-Only Properties):只读属性只提供get方法用于读取属性的值,不提供set方法用于修改属性的值。

declarative_base参数

declarative_base参数

declarative_base参数declarative_base是SQLAlchemy中的一个函数,用于创建一个基类(Base class),以便后续的类可以继承该基类。

本文将介绍declarative_base函数的参数以及相关的参考内容。

1. cls:指定继承的基类。

默认情况下,指定为object。

很少需要手动指定。

2. metadata:绑定元数据。

元数据是数据库对象的描述信息,包括表名、列名、数据类型等。

默认为None,如果不指定,则需要在之后手动绑定元数据。

3. name:指定基类的名称。

默认为Base。

可以将其更改为其他名称,以适应项目的需求。

4. kwargs:可选的其他参数,可以用于传递一些配置选项。

在使用declarative_base函数时,可以根据实际需求来使用不同的参数配置。

下面是一些相关参考内容,可以帮助理解和使用declarative_base函数。

1. SQLAlchemy官方文档:SQLAlchemy官方文档对declarative_base函数进行了详细的介绍,包括参数的使用方法和作用。

可以查阅该文档以及示例代码,快速上手declarative_base函数的使用。

2. SQLAlchemy ORM Tutorial:这是一个关于SQLAlchemyORM的教程,对declarative_base函数进行了详细介绍,并提供了示例代码。

通过跟随该教程,可以了解如何使用declarative_base函数来定义ORM模型。

3. SQLAlchemy ORM Tutorial for Python Developers:这是另一个关于SQLAlchemy ORM的教程,对declarative_base函数进行了详细介绍,并提供了示例代码和解释。

通过阅读该教程,可以了解使用declarative_base函数来创建ORM模型的最佳实践。

4. Real Python - Object-Relational Mapping (ORM) in Pythonwith SQLAlchemy:这是一篇关于SQLAlchemy ORM的教程,其中提到了declarative_base函数的用法。

数据库应用基础第二章数据库的基本操作

数据库应用基础第二章数据库的基本操作

指定关联的<filespec>
定义主文件
10
指定建立数据库的 日志文件
Log On
数据库的启动位置, 也是数据库中其他 文件的入口位置
{
(Name=logical_file_name,
Filename=’os_file_name’
指定文件的
[,Size=size]
操作系统文
[,Maxsize={max_size|unlimited}] 件名和路径
])
默认权限为 sa,dbo
缩减master系统数 据库
25
例:缩减My_DB数据库的容量
Exec Sp_dboption‘my_db’,’single User’,true Go Use My_db Go DBCC Shrinkdatabase(‘my_db’) Go Exec Sp_dboption ‘My_db’,’single User’,false Go
复习
1 数据 2 数据库 3 数据库管理系统
第二章 数据库的基本操作
2.1 文件和文件组
1 文件
– 主要数据文件:该文件包含数据库的启动信息,并用于存储数据,扩 展名是 .mdf
– 次要数据文件(可选):由用户定义并存储,这些文件含有不能置于主
要数据文件中的所有数据,扩展名是 .ndf – 事务日志文件:这些文件包含用于恢复数据库的日志信息。每个数据
Select Databasepropertyex (’My_db’,’collation’) Go Exec Sp_helpdb ‘My_db’ Go
16
2.3 管理数据库
打开数据库 增加数据库容量 查看及修改数据库选项 缩减数据库容量 更改数据库名称 查看数据库个数 删除数据库

HB0923 核心10GBaseR_PHY v2.0 手册说明书

HB0923 核心10GBaseR_PHY v2.0 手册说明书

HB0923Handbook Core10GBaseR_PHY v2.0Microsemi HeadquartersOne Enterprise, Aliso Viejo,CA 92656 USAWithin the USA: +1 (800) 713-4113 Outside the USA: +1 (949) 380-6100 Sales: +1 (949) 380-6136Fax: +1 (949) 215-4996Email: *************************** ©2020 Microsemi, a wholly owned subsidiary of Microchip Technology Inc. All rights reserved. Microsemi and the Microsemi logo are registered trademarks of Microsemi Corporation. All other trademarks and service marks are the property of their respective owners. Microsemi makes no warranty, representation, or guarantee regarding the information contained herein or the suitability of its products and services for any particular purpose, nor does Microsemi assume any liability whatsoever arising out of the application or use of any product or circuit. The products sold hereunder and any other products sold by Microsemi have been subject to limited testing and should not be used in conjunction with mission-critical equipment or applications. Any performance specifications are believed to be reliable but are not verified, and Buyer must conduct and complete all performance and other testing of the products, alone and together with, or installed in, any end-products. Buyer shall not rely on any data and performance specifications or parameters provided by Microsemi. It is the Buyer’s responsibility to independently determine suitability of any products and to test and verify the same. The information provided by Microsemi hereunder is provided “as is, where is” and with all faults, and the entire risk associated with such information is entirely with the Buyer. Microsemi does not grant, explicitly or implicitly, to any party any patent rights, licenses, or any other IP rights, whether with regard to such information itself or anything described by such information. Information provided in this document is proprietary to Microsemi, and Microsemi reserves the right to make any changes to the information in this document or to any products and services at any time without notice.About MicrosemiMicrosemi, a wholly owned subsidiary of Microchip T echnology Inc. (Nasdaq: MCHP), offers a comprehensive portfolio of semiconductor and system solutions for aerospace & defense, communications, data center and industrial markets. Products include high-performance and radiation-hardened analog mixed-signal integrated circuits, FPGAs, SoCs and ASICs; power management products; timing and synchronization devices and precise time solutions, setting the world's standard for time; voice processing devices; RF solutions; discrete components; enterprise storage and communication solutions, security technologies and scalable anti-tamper products; Ethernet solutions; Power-over-Ethernet ICs andmidspans; as well as custom design capabilities and services. Learn more at .Contents1Revision History . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .11.1Revision 1.0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 2References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2 3Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .33.1Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33.2Features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33.3Core Version . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33.4Supported Families . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33.5Device Utilization and Performance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 4Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .44.1Ports . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 5Functional Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .65.1Clocks and Reset . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65.2Gearbox Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65.3Gearbox Module . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65.4Transmit FIFO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75.5Elastic Buffer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75.6Read and Write Control Logic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 6Timing Diagrams . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .86.1Rx Gearbox interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86.2Tx Gearbox Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 7Tool Flow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .97.1License . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97.2Using core in Libero SmartDesign . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97.3Synthesis in Libero . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97.4Place-and-Route in Libero . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 8Testbench . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .10 9System Integration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .11FiguresFigure 1Functional Block Diagram . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 Figure 2Timing diagram for Rx Gearbox Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 Figure 3Timing diagram for Tx Gearbox Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 Figure 4Core Instance Full I/O View in SmartDesign . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 Figure 5Block Diagram of 10G BaseR System . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 Figure 6SmartDesign representation of 10G BaseR System . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11TablesTable 1Device Utilization and Performance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 Table 2Input and Output Signals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4Revision History1Revision HistoryThe revision history describes the changes that were implemented in the document. The changes arelisted by revision, starting with the most current publication.1.1Revision 1.0Revision 1.0 is the first publication of this document. Created for Core10GBaseR_PHY v2.0.2ReferencesThis section lists documents that provide more information about concepts and features covered in thisuser guide.•UG0686 - Microsemi PolarFire FPGA User Guide•UG0677 - PolarFire FPGA Transceiver User Guide3Introduction3.1OverviewCore10GBaseR_PHY is an IP that converts the transceiver gearbox signals into the XGMII format. This IP is needed to interface the Transceiver with the XGMII compliant MAC.3.2FeaturesThe IP core has the following features:•64-bit XGMII interface (MAC side)•64-bit gearbox mode (Transceiver side)•Supported for only 64B66B PCS encoding in the transceiver•Converts the gearbox signals to the XGMII signals on the transmit interface•Receives the gearbox signals and adds/deletes skip characters to absorb the +/-100 ppm variation and converts to XGMII format towards the MAC side3.3Core VersionThis handbook is for Core10GBaseR_PHY version 2.0.3.4Supported Families•PolarFire ® SoC •PolarFire ®3.5Device Utilization and PerformanceDevice utilization and performance data is provided in T able 1 for the supported device families. The data listed in this table is indicative only. The overall device utilization and performance of the core is system dependent.Note:The data in this table is achieved using typical synthesis and layout settings. Frequency (in MHz) was setto 100 and speed grade was -1.Table 1 •Device Utilization and PerformanceFamily Utilization (Logic Elements)Performance (MHz)DeviceSequential Combinational uSRAM(1K)T otal %I_TX_CLK I_RX_CLK I_XGMII_T XCLK I_XGMII_RXCLK PolarFire Soc 2657168412 1.0230210420216PolarFire27381641121.02502305002504Interface4.1PortsAll the input and output ports of the core are listed in the following table.Table 2 • Input and Output SignalsPort name Width Direction DescriptionClock and ResetI_TX_CLK1Input Transmit clock of 161.133 MHz provided by thetransceiver.I_RX_CLK1Input Recovered clock of 161.133 MHz provided by thetransceiver.I_TXCLK_RESETN1Input Active low asynchronous reset input to reset transmitlogic. This reset is internally synchronized withI_TX_CLK.I_RXCLK_RESETN1Input Active low asynchronous reset input to reset receivelogic. This reset is internally synchronized withI_RX_CLK.Transceiver Rx Gearbox InterfaceI_PMA49_RX_GRBX_LOCK1Input PMA Rx gearbox lock signal.I_PMA49_RX_GRBX_SOS1Input Start-of-sequence pulse.Sequence is the span of clock beats over whichuniquely different parts of block symbols are transferredacross the interface on each of the clock beats. Lengthof a sequence varies with block size and active width ofinterface.Note:For 66-bit blocks and a 64-bit interface thesequence length is 33 clock beats.I_PMA49_RX_GRBX_HDR_EN1Input Enable for header. WhenI_PMA49_RX_GRBX_HDR_EN =1 for a clock beat,then valid sync header bits are transferred.I_PMA49_RX_GRBX_DATA_EN1Input Data enable is 1 for a clock beat when data is presenton I_PMA49_RX_GRBX_DATA. Over a sequence thereare clock beats which convey no data. For 66-bit blocksand a 64-bit interface there is one dead cycle on beat32.I_PMA49_RX_GRBX_HDR4Input Sync header corresponding to different encoding types.Note:Bits [1:0] contain header in 64B66B mode.The upper bits [3:2] are driven withLogic'0'.I_PMA49_RX_GRBX_DATA64Input Data received from PMA in gearbox mode.Transceiver Tx Gearbox InterfaceO_PMA49_TX_GRBX_SOS1Output Start-of-sequence pulse.Length of a sequence varies with block size and activewidth of interface.Note:For 66-bit blocks and a 64-bit interface thesequence length is 33 clock beats.O_PMA49_TX_GRBX_HDR_EN1OutputEnable for header. WhenO_PMA49_TX_GRBX_HDR_EN =1 for a clock beat, then valid sync header bits are transferred.O_PMA49_TX_GRBX_HDR 4OutputSync header corresponding to different encoding types.Note:Bits [1:0] contain header in 64B66B mode.The upper bits [3:2] are driven with Logic'0'.In the transmit direction, the 64-bit transmit block is sent with the sync headers. For control blocks it carries value [1:0] = 'b10Else [1:0] = 'b01.O_PMA49_TX_GRBX_DATA_EN 1OutputData enable is 1 for a clock beat when data is present on O_PMA49_TX_GRBX_HDR_EN. Over a sequence there are clock beats which convey no data.O_PMA49_RX_GRBX_DATA 64Output 64-bit transmit data to PMA XGMII SignalsI_XGMII_RXD 64Input XGMII RX data I_XGMII_RXC 8Input XGMII RX control O_XGMII_TXD 64Output XGMII TX data O_XGMII_TXC 8Output XGMII TX controlXGMII ClocksI_XGMII_TXCLK 1Input XGMII TX clock of 156.25 MHz I_XGMII_RXCLK1InputXGMII Rx clock of 156.25 MHzTable 2 • Input and Output Signals Port nameWidth Direction DescriptionClock and Reset5Functional DescriptionCore10GBaseR_PHY is used to interface the transceiver to the XGMII compliant MAC. This IP hasgearbox functionality to convert the transceiver transmit and receive gearbox signals to the XGMIIformat. It also performs the frequency/rate matching of the transceiver side clocks to the XGMII clocks.The functional block diagram of the core is shown in Figure1. Each of the functional blocks and theclocks/resets of the core is described as follows.Figure 1 • Functional Block DiagramThe Core10GBaseR_PHY IP operates in two frequency domains, one at the transceiver side and theother at the MAC side.The transceiver transmit logic operates with the I_TX_CLK and the receive logic with I_RX_CLK. Thetransmit side of the MAC operates with the XGMII TX clock and receive side with XGMII RX clock.The module has two reset signals as specified in the Reset section of T able2, page4 and both the resetsare synchronized internally in the IP with the respective clocks.5.2Gearbox InterfaceThis module interfaces the gearbox's transmit and receive module with the Microchip's transceiver. 5.3Gearbox ModuleThis module interfaces the gearbox interface logic to the transmit FIFO on the transmit path and with theelastic buffer on the receive path.The gearbox module rate matches the transceiver's transmit clock with the transmit FIFO. This isachieved by inserting dead cycle every 32nd cycle in the transmit sequence.In the dead cycle there is no read performed. The transmit interface timing diagram is shown in Figure3.Similarly, the gearbox module rate matches the transceiver's receive clock with the elastic buffer. It isachieved by inserting the dead cycle every 32nd clock cycle. The dead cycle is where the write is notperformed. The receive timing diagrams are shown in Figure2.5.4Transmit FIFOIt is a simple asynchronous FIFO of size 64x72 and used to interface the gearbox module with the MACin the transmit path. The write logic of the transmit FIFO operates with the XGMII Tx clock and the readlogic operates with the transceiver clock (I_TX_CLK).5.5Elastic BufferIn the receive path, the elastic buffer interfaces between the gearbox and MAC. The elastic buffer hastwo functions:•The elastic buffer performs write on transceiver's receive clock (I_RX_CLK) and reads on the XGMII clock (I_XGMII_RXCLK).•The elastic buffer handles the ppm variation upto +/- 100PPM between the XGMII receive side MAC clock and the transceiver's receive clock.5.6Read and Write Control LogicThe read and write control logic controls the read and write into the elastic buffer module. This logic addsor deletes the idle characters depending upon the transceiver receive clock frequency.If the receive clock frequency (I_RX_CLK) is more than the XGMII MAC receive clock, the idles areremoved, which means it is not written into the elastic buffer. If the receive clock frequency is less thanthe MAC receive clock, the idles are added after reading from the elastic buffer.Timing Diagrams6Timing Diagrams6.1Rx Gearbox interfaceThe following figure shows the timing diagram for Rx gearbox interface.Figure 2 •Timing diagram for Rx Gearbox Interface6.2Tx Gearbox InterfaceThe following figure shows the timing diagram for Tx gearbox interface.Figure 3 •Timing diagram for Tx Gearbox Interfaceabcdef gihj1001011001paa deadcycleI_RX_CLKI_PMA49_RX_GRBX_SOSI_PMA49_RX_GRBX_HDR I_PMA49_RX_GRBX_DATAI_PMA49_RX_GRBX_HDR_ENI_PMA49_RX_GRBX_DATA_ENabcdef gihj1001011001paa dead cycleI_TX_CLKO_PMA49_TX_GRBX_SOSO_PMA49_TX_GRBX_HDR O_PMA49_TX_GRBX_DATA7Tool Flow7.1LicenseCore is available as obfuscated.The obfuscated version is license locked and will be available only with Libero Gold and PlatinumLicenses.7.2Using core in Libero SmartDesignCore is pre-installed in the SmartDesign IP deployment design environment or can be downloaded fromthe online repository.An example of the core instantiated in Libero SmartDesign is shown in Figure4.Figure 4 • Core Instance Full I/O View in SmartDesignFor more information about using the SmartDesign to instantiate and generate cores, see UsingDirectCore in Libero® SoC User Guide.7.3Synthesis in LiberoT o run synthesis on the core, set the design root to the IP component instance and run the Synthesistool from the Libero Design Flow pane.7.4Place-and-Route in LiberoAfter the design is synthesized, run the Place-And-Route tool from the Libero Design Flow pane.A user testbench is not provided with the core.System Integration9System IntegrationThis section provides hints to ease the integration of the core. The block diagram Core10GBaseR_PHYIP connected to the 10G MAC over the XGMII interface is shown in Figure5. The Libero SmartDesign isshown in Figure6.Figure 5 • Block Diagram of 10G BaseR SystemFigure 6 • SmartDesign representation of 10G BaseR System。

jackson beanproperty用法

jackson beanproperty用法

Jackson是一个用于Java的流行的JSON处理库,它提供了很多强大的功能来帮助开发者轻松地处理JSON数据。

其中,BeanProperty是Jackson中的一个重要概念,它用于访问Java类中的属性,并且可以在序列化和反序列化过程中起到重要作用。

本文将详细介绍Jackson 中BeanProperty的用法,帮助开发者更好地理解和应用这一概念。

一、什么是BeanProperty在Jackson中,BeanProperty表示Java类中的一个属性,它可以通过反射机制来访问和操作类中的成员变量。

BeanProperty包含了属性的名称、类型、注解等信息,可以帮助Jackson准确地对JSON数据进行序列化和反序列化。

二、BeanProperty的基本用法在使用Jackson进行JSON处理时,我们经常会遇到需要访问和操作Java类中的属性的情况。

这时,就可以使用BeanProperty来完成这些操作。

下面是BeanProperty的一些基本用法:1. 获取属性名称使用BeanProperty可以方便地获取Java类中的属性名称,例如:```javaBeanProperty property = // 获取属性的方法String propertyName = property.getName();```2. 获取属性类型除了属性名称,BeanProperty还可以获取属性的类型信息,例如:```javaClass<?> propertyType = property.getType();```3. 获取属性值使用BeanProperty可以方便地获取Java类实例中的属性值,例如:```javaObject propertyValue = property.get(beanInstance);```4. 设置属性值BeanProperty还可以用于设置Java类实例中的属性值,例如:```javaproperty.set(beanInstance, propertyValue);```5. 获取属性注解对于带有注解的属性,BeanProperty可以获取对应的注解信息,例如:```javaJsonProperty annotation =property.getAnnotation(JsonProperty.class);```三、BeanProperty的高级用法除了上述基本的用法,BeanProperty还可以在一些高级场景中发挥作用。

Net Customisation User Guide

Net Customisation User Guide

.NET Customization User GuideAVEVA Solutions LtdDisclaimerInformation of a technical nature, and particulars of the product and its use, is given by AVEVA Solutions Ltd and its subsidiaries without warranty. AVEVA Solutions Ltd and its subsidiaries disclaim any and all warranties and conditions, expressed or implied, to the fullest extent permitted by law. Neither the author nor AVEVA Solutions Ltd, or any of its subsidiaries, shall be liable to any person or entity for any actions, claims, loss or damage arising from the use or possession of any information, particulars, or errors in this publication, or any incorrect use of the product, whatsoever.CopyrightCopyright and all other intellectual property rights in this manual and the associated software, and every part of it (including source code, object code, any data contained in it, the manual and any other documentation supplied with it) belongs to AVEVA Solutions Ltd or its subsidiaries.All other rights are reserved to AVEVA Solutions Ltd and its subsidiaries. The information contained in this document is commercially sensitive, and shall not be copied, reproduced, stored in a retrieval system, or transmitted without the prior written permission of AVEVA Solutions Ltd Where such permission is granted, it expressly requires that this Disclaimer and Copyright notice is prominently displayed at the beginning of every copy that is made.The manual and associated documentation may not be adapted, reproduced, or copied, in any material or electronic form, without the prior written permission of AVEVA Solutions Ltd. The user may also not reverse engineer, decompile, copy, or adapt the associated software. Neither the whole, nor part of the product described in this publication may be incorporated into any third-party software, product, machine, or system without the prior written permission of AVEVA Solutions Ltd, save as permitted by law. Any such unauthorised action is strictly prohibited, and may give rise to civil liabilities and criminal prosecution.The AVEVA products described in this guide are to be installed and operated strictly in accordance with the terms and conditions of the respective licence agreements, and in accordance with the relevant User Documentation. Unauthorised or unlicensed use of the product is strictly prohibited.First published September 2007© AVEVA Solutions Ltd, and its subsidiaries 2007AVEVA Solutions Ltd, High Cross, Madingley Road, Cambridge, CB3 0HB, United KingdomTrademarksAVEVA and Tribon are registered trademarks of AVEVA Solutions Ltd or its subsidiaries. Unauthorised use of the AVEVA or Tribon trademarks is strictly forbidden.AVEVA product names are trademarks or registered trademarks of AVEVA Solutions Ltd or its subsidiaries, registered in the UK, Europe and other countries (worldwide).The copyright, trade mark rights, or other intellectual property rights in any other product, its name or logo belongs to its respective owner.AVEVA .NET CustomizationContents Page.NET Customization User GuideIntroduction. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1:1 About this Guide . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1:1 .NET Customization Architecture. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1:1 Common Application Framework Interfaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1:2 Database Interfaces. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1:2 Geometry Interfaces. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1:3 Shared Interfaces. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1:3 Utilities Interfaces. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1:4 Graphics Interfaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1:4 Sample Code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1:4 AttributeBrowserAddin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1:4 ExamplesAddin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1:4 NetGridExample. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1:4 PMLNetExample . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1:4 PMLGridExample. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1:5 Reference Documentation. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1:5 Compatibility with future versions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1:5How to Write an Addin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2:1 The IAddin Interface. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2:1 The WindowManager. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2:3 Window Creation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2:3IWindow Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2:4 Window Events . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2:4WindowManager Events. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2:5 The StatusBar. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2:5Addin Commands . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2:6 Writing a Command Class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2:6 Command Events. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2:9 Resource Manager. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2:9 Configuring a Module to Load an Addin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2:9 Menu and Command Bar Customization . . . . . . . . . . . . . . . . . . . . .3:1 Configuring a Module to Load a UIC File. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3:1 Editing the UIC File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3:2 Selection of Active Customization File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3:3 The Tree . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3:4Selecting a Node in the Tree. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3:5 Drag & Drop within the Tree . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3:5 Node Context Menus. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3:5 List of Command Tools . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3:6 Selecting a Node in the List. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3:6 Drag & Drop from the List to the Tree. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3:6 List Context Menu. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3:7 Tool Types. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3:8 Sorting List via Heading . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3:10 Property Grid . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3:10 Action Buttons . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3:12 Resource Editor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3:13 Resource Editor Command Bar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3:14 Using Resources for Properties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3:16 Standalone Resource Editor. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3:16Database Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .4:1 Data Model Definition Classes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4:1 DbElementType . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4:1Overview. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4:1 Constructors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4:1 Methods. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4:2 Related ENUMS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4:2 Related Pseudo Attributes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4:2 DbAttribute. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4:3 Overview. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4:3 Constructors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4:3 Methods. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4:3 Related ENUMS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4:4 DbElementTypeInstance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4:4 DbAttributeInstance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4:4Element access . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4:5 DbElement Basics. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4:5 Overview. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4:5 Constructors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4:5 Identity. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4:5 Element Validity. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4:6 Error Handling. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4:6 Basic Properties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4:6 Navigation. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4:7 Basic Navigation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4:7 Pseudo Attributes Relating to Element Navigation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4:8 Secondary Hierarchies . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4:8 Getting Attribute Values. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4:9 Basic Mechanism . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4:9 List of Valid Attributes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4:10 Qualifier. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4:11 Getting an Attribute as a Formatted String . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4:11 Database Modifications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4:11 Overview. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4:11 The Modification Pipeline . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4:12 Claiming Elements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4:13 Pseudo Attributes Relating to Claims . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4:13 Set Attribute. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4:14 Creating Element. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4:14 Moving Element. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4:15 Changing Type . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4:15 Pseudo Attributes Relating to Modifications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4:15 Storage of Rules and Expressions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4:16 Database Expressions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4:16 Rules. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4:17 Pseudo Attributes Relating to Rules and Expressions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4:17 Comparison of Data with Earlier Sessions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4:17Filters/Iterators. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4:19 Iterators. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4:19 Filters. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4:19Dabacon Tables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4:19 Overview of Dabacon Tables. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4:19 Table Classes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4:20 DBs, MDBs and Projects. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4:21 MDB Functionality . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4:21 DB Functionality. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4:22 Events . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4:23 Overview of Events . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4:23 Overview of C# Mechanism. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4:23 General Capture of DB Changes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4:24Adding Pseudo Attribute Code. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4:24 DB/MDB Related Events . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4:26PMLNet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .5:1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5:1 Design Details . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5:1 Using PMLNet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5:1Limitations. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5:2 Object Names . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5:3 Query Methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5:3 Global Method. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5:4 Method Arguments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5:4 Method Overloading . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5:5 Custom Attributes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5:5 Private Data and Properties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5:6 Scope. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5:6 Instantiation. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5:7 ToString() Method. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5:7 Method Names . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5:7 Double Precision. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5:7 Events. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5:7 Error Handling. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5:8 Rules for Calling .NET. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5:8 Tracing. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5:9 .NET Controls. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5:9 Creating a Container. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5:9 Hosting .NET Control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5:10 Events. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5:10 Examples. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5:10 PMLGridExample . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5:10 PMLNetExample. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5:10The AVEVA C# Grid Control. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .6:1Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6:1 Creating a C# Addin which Contains an AVEVA Grid Control. . . . . . . . . . . . . . 6:1 Providing Access to the Addin in PDMS Design or Outfitting Design . . . . . . . 6:3 Using the AVEVA Grid Control with Different Data Sources: . . . . . . . . . . . . . . 6:4 Adding an XML Menu to the Form . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6:5 Adding an Event to the Addin. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6:6 Other Functionality Available within the PDMS Environment. . . . . . . . . . . . . . 6:7 Use of the C# Grid Control with PML. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6:7 AVEVA Grid Control API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6:7 Input Mask Characters. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6:121Introduction1.1About this GuideThis manual is designed to give a software engineer with experience of softwaredevelopment in C# using Visual Studio guidance on the development of .NET customizationfor the AVEVA PDMS and AVEVA Marine products. Customization ArchitectureThe introduction of a customization capability using Microsoft .NET technology has openedup a whole new world of customization and is particularly relevant for the integration ofAVEVA products with other customer systems. .NET API's provided access to variousaspects of the product including Graphical User Interface, Database and Geometry.As part of AVEVA's strategy of 'continual progression' the .NET customization capability hasbeen introduced in such a way that it can be used alongside the existing PML basedcustomization. Through the use of , an enhancement to PML which allows thePML programmer to call .NET code, customization which utilizes the strengths of .NETcompiled code and PML can be achieved.Figure 1: customization ArchitectureThe above diagram illustrates the two new methods of customization using .NETtechnology. The first is via the concept of a .NET Addin and the second using .Both methods provide a mechanism whereby a .NET assembly (dll) can be dynamicallyloaded into a module at runtime.1.2.1Common Application Framework InterfacesThe Common Application Framework (CAF) is an extensible framework which provides the.NET programmer with access to various services which support both applicationdevelopment and customization. The foundations of the CAF are provided by the twointerface assemblies:•Aveva.ApplicationFramework.dll•Aveva.ApplicationFramework.Presentation.dllThese interfaces provide the following major services:Namespace: Aveva.ApplicationFramework•AddinManager: This class provides properties and methods for the management of ApplicationFramework Addins.•ServiceManager: This class defines an interface which provides a means by which the various components of the ApplicationFramework can publish their services. TheServiceManager also acts as a service provider responding to requests for services. Itcan also be used by applications and application addins to publish additional services.•SettingsManager: This class provides properties and methods for the management of application settings which are stored in settings groups which are persisted betweensessions.Namespace: Aveva.ApplicationFramework.Presentation•CommandBarManager: This provides access to the menus and commandbars of a CAF based application. It also has methods to load the definition of menus andcommandbars from User Interface customization (UIC) files.•CommandManager: This class defines an interface to provide the presentation framework client with a mechanism for the management of command objects whichcan be associated with Tools or other User interface objects. The action of invoking atool (e.g clicking a ButtonTool) will cause the execution of the associated commandobject. It is possible to associated the same command object with a number of differentuser interface objects (e.g. ButtonTool on a Menu and a LinkLabel) thereby allowing forthe centralisation of these user interface objects action within a command. Variousstate-like properties of a command (e.g. enabled/checked) would also be reflected in alluser interface objects associated with a command. For example, disabling a commandwould cause all associated user interface objects to be disabled. User interface objectsare associated with a command via a CommandExecutor derived class.•ResourceManager: This class defines an interface to provide Addins with a simplified mechanism to access localizable resources.The ResourceManager provides a numberof methods which allows an addin to then access the various types of resources (string,image, cursor, icon etc.) which resource files may contain.•WindowManager: This provides access to the main application window, the StatusBar and a collection of MDI and docked windows. It also provides the addin writer withmethods to create MDI and docked windows to host user controls.1.2.2Database InterfacesThe database related interfaces are provided by the interface assemblies:•Aveva.Pdms.Database.dll & PDMSFilters.dllThis interface has the following main classes:Namespace: Aveva.Pdms.Database•DatabaseService: The sole purpose of this class is to open a project.。

UVM1.1应用指南及源代码分析_20111211版

UVM1.1应用指南及源代码分析_20111211版

6.2. 强大的config .............................................................................................94
6.3. 聚合config变量 .........................................................................................98
写这本书,只是想把自己会的一点东西完全的落于纸上。在努力学习 UVM 的 过程中,自己花费了很多时间和精力。我只想把学习的心得记录下来,希望能够给 后来的人以启发。如果这本书能够给一个人带来一点点的帮助,那么我的努力就不 算是白费。
这本书的前半部分(第 1 到第 9 章)介绍了 UVM 的使用,其用户群较为广泛;
8.2. 搭建一个简单的register model...............................................................129
8.3. 复杂的register model...............................................................................137
函数索引609xvi图目录图11uvm在数字电路设计中的位置3图12uvm对systemverilog的封装4图13简单验证平台5图14uvm验证平台的树形结构6图15实际验证平台7图16packbytes和unpackbytes14图17uvm验证平台中的agent181图21完整的uvm树35图22uvm中常用类的继承关系37图31uvm中的常用phase47图32uvm中所有的phase50图33两个driver位于同一domain57图34两个driver位于不同的domain58图41穿梭的transaction60图51defaultsequence的设置与启动77图52sequencer与driver之间的通信80图53virtualsequence的使用85图61半全局变量93图71monitor与scoreboard的通信104图72使用public成员变量实现通信105图73put操作106图74get操作106xvii图75transport操作107图76component在端口通信中的作用109图77connect关系的建立110图78port与imp的连接111图79portexport与imp的连接115图710使用fifo连接component122图81uvmregfield和uvmreg126图82使用registermodel读取寄存器的流程128图83uvmregfield

declarative_base参数

declarative_base参数

declarative_base参数declarative_base是一个非常有用的工具,它可以帮助我们更加有效地使用SQLAlchemy这个Python ORM工具,提高我们的开发效率。

这篇文章将深入探讨declarative_base的参数,介绍它们的作用以及如何使用它们。

什么是declarative_base?让我们简单地介绍一下declarative_base是什么。

在SQLAlchemy中,我们可以使用两种方式来定义对象关系映射(ORM):基于对象(Object Relational Mapping,ORM)和基于SQL(Structured Query Language,SQL)。

基于对象的ORM让我们可以使用Python 对象来表示数据库中的数据,而SQLAlchemy中最常用的ORM方式就是declarative_base。

declarative_base是一个函数,它接收一个参数,这个参数是一个类,表示所有ORM 类的基础类。

这个基础类会提供给我们一些常用的属性和方法,例如__tablename__、primary_key()等。

我们需要继承这个类,然后在子类中定义我们自己的ORM类。

假设我们需要定义一个名为User的ORM类,它映射了数据库中的一个user表。

我们可以这样写:```pythonfrom sqlalchemy.ext.declarative import declarative_basefrom sqlalchemy import Column, Integer, StringBase = declarative_base()class User(Base):__tablename__ = 'user'id = Column(Integer, primary_key=True)name = Column(String)age = Column(Integer)```这里我们首先从sqlalchemy.ext.declarative模块中导入declarative_base函数,然后调用它来创建Base类作为所有ORM类的基础类。

boost property tree 用法

boost property tree 用法

boost property tree 用法boost property tree 是一个在 C++ 中使用的高效库,用于处理XML 或 JSON 格式的数据。

它提供了一种简单而直观的方式来操作这些数据,使得处理大量数据变得更加容易。

在本篇文章中,我们将介绍 boost property tree 的基本用法,包括如何创建、修改和检索数据。

**一、安装与导入**要使用 boost property tree,首先需要将其添加到项目中。

您可以通过包管理器(如 pip)或手动下载并编译来安装它。

一旦安装完成,您需要将 boost 库和头文件包含到您的 C++ 代码中。

**二、创建和初始化 property tree**要创建一个 property tree,您需要使用其构造函数。

这个构造函数接受一个容器,用于存储节点的键值对。

例如:```cppbpt::property_tree pt;```您还可以使用 `add_child` 方法向 property tree 添加子节点:```cpppt.add_child("root", bpt::value("child_node","child_data"));```这将在 "root" 节点下创建一个名为 "child_node" 的新节点,其值为 "child_data"。

**三、查询和检索数据**您可以使用 property tree 的方法来查询和检索数据。

例如,要检索 "child_node" 节点的值,可以使用 `get` 方法:```cppstd::string value = pt.get("root.child_node");```如果您想获取所有子节点的值,可以使用 `values` 方法:```cppstd::vector<std::string> child_values =pt.values("root.child_node");```如果您想修改节点的值,可以使用 `set` 方法:```cpppt.set("root.child_node", "new_value");```您还可以使用 `erase` 方法从 property tree 中删除节点或键值对:```cpppt.erase("root.child_node"); // 删除整个节点pt.erase("root.child_node.subnode"); // 删除子节点及其所有内容```**四、解析和生成 XML/JSON**boost property tree 还提供了用于解析和生成 XML/JSON 的功能。

sv property高级复杂用法

sv property高级复杂用法

sv property高级复杂用法sv property是一个用于创建或更新特定项属性值的函数。

它的语法如下:sv property [-Path] <String[]> [-Name] <String[]> [-Value]<Object[]> [[-Type] <String[]>] [[-Force]] [[-PassThru]] [[-Credential] <PSCredential>] [[-UseTransaction]][<CommonParameters>]其中,一些常用的高级复杂用法包括:1. 创建多个属性:可以通过将多个属性名称和对应的属性值传递给`-Name`和`-Value`参数来同时创建多个属性。

例如:```sv property -Path C:\Test -Name "Property1", "Property2" -Value "Value1", "Value2"```2. 更新属性类型:可以使用`-Type`参数来指定属性的类型。

例如,将属性的类型设置为字符串:```sv property -Path C:\Test -Name "Property" -Value "Value" -Type "String"```3. 使用事务功能:如果希望在特定操作中创建或更新多个属性,并希望这些属性要么全部成功要么全部失败,可以使用`-UseTransaction`参数启用事务功能。

例如:```sv property -Path C:\Test -Name "Property1", "Property2" -Value "Value1", "Value2" -UseTransaction```4. 使用凭据:可以通过`-Credential`参数传递凭据信息来使用具有适当权限的用户身份执行操作。

qt property browser 用法

qt property browser 用法

qt property browser 用法一、简介Qt Property Browser是一个用于查看和管理Qt对象属性的工具,它可以帮助开发者更方便地调试和诊断代码。

通过Qt Property Browser,我们可以查看和修改对象的属性,这对于理解对象的内部状态和调试非常有用。

二、安装与使用1. 安装:Qt Property Browser是Qt框架的一部分,如果你使用的是Qt Creator作为开发环境,那么它应该已经内置了。

如果没有,可以从Qt官方网站下载并安装。

2. 打开Qt Property Browser:在Qt Creator中,可以通过右键点击对象并选择"Properties"或者"Property Browser"来打开。

也可以通过View菜单打开。

3. 使用Property Browser:一旦打开Property Browser,你就可以看到所有可用的对象属性。

在Property Browser中,你可以通过点击属性名称来查看属性的详细信息,包括类型、默认值等。

你也可以通过双击属性来编辑它的值。

三、属性详解Property Browser显示了所有可用的对象属性,这些属性通常由对象自身定义,也可以由开发者添加。

一般来说,Qt类的每个对象都有一组预定义的属性,如信号、插槽、事件等。

开发者也可以为对象添加自定义的属性。

Property Browser对于调试和诊断非常有用。

通过查看和修改对象的属性,你可以更好地理解对象的内部状态和行为。

例如,你可以使用Property Browser 来检查某个对象的某个属性的值是否符合预期,或者查看某个事件在被触发时的参数。

四、常见问题在使用Qt Property Browser时,可能会遇到一些常见问题:1. 属性列表为空:这可能是因为你正在查看的对象没有定义任何属性,或者你正在查看的对象类型不支持Property Browser。

cocoscreator property各种类型的用法

cocoscreator property各种类型的用法

cocoscreator property各种类型的用法标题:Cocos Creator Property 各种类型的用法详解Cocos Creator是一款基于WebGL的开源游戏开发工具,它提供了一个完整的游戏开发工作流。

在使用Cocos Creator进行游戏开发时,我们常常会遇到各种类型的property(属性)。

本文将详细解析这些property的各种类型及其用法。

一、基本类型1. Boolean:布尔型,取值为true或false。

例如,用于判断角色是否处于战斗状态。

2. Number:数字型,可以是整数或浮点数。

例如,用于表示角色的生命值或者攻击力。

3. String:字符串型,用于存储文本信息。

例如,角色的名字或者描述。

4. Color:颜色型,用于设置对象的颜色。

例如,角色的衣服颜色或者背景颜色。

二、复合类型1. Vector2/3/4:向量型,用于表示二维、三维或四维空间中的位置或方向。

例如,用于表示角色的位置或朝向。

2. Rect:矩形型,由左上角和右下角的两个点确定。

例如,用于定义一个场景的边界。

3. Size:尺寸型,包含宽度和高度两个属性。

例如,用于定义一个UI元素的大小。

三、特殊类型1. Asset:资源型,指向项目中的一个资源文件。

例如,用于加载一张图片或一段音频。

2. Node:节点型,指向场景中的一个节点。

例如,用于获取或设置角色的位置。

3. Component:组件型,指向节点上的一个组件。

例如,用于操作角色的动作或动画。

4. Enum:枚举型,预设的一组常量。

例如,用于表示角色的状态(如行走、奔跑、攻击等)。

5. Any:任意型,可以是任何类型的数据。

例如,用于存储不确定类型的临时数据。

四、使用方法1. 设置属性值:在Inspector面板中直接修改属性值,或者在脚本中通过代码来设置。

2. 获取属性值:在脚本中通过this.node.propName的方式来获取属性值。

qttreepropertybrowser的样式

qttreepropertybrowser的样式

qttreepropertybrowser是一种用于显示和编辑属性树的控件,它是基于Qt框架开发的。

在实际的应用中,我们经常会遇到需要使用属性树来展示和修改一些数据的情况,此时qttreepropertybrowser就能够发挥它的作用。

qttreepropertybrowser有着丰富的样式设置,可以根据实际需求来调整控件的外观和风格。

在本文中,我们将重点讨论qttreepropertybrowser的样式设置,包括如何修改控件的样式、如何自定义样式、以及一些样式设置的注意事项等。

1. 修改控件的样式要修改qttreepropertybrowser的样式,我们可以使用Qt的样式表来实现。

样式表可以通过设置控件的属性来改变控件的外观,比如背景颜色、文字颜色、边框样式等。

通过修改qttreepropertybrowser 的样式表,我们可以轻松地实现控件的外观定制化。

以修改qttreepropertybrowser的背景颜色为例,我们可以通过以下代码来实现:```cppQTreePropertyBrowser *browser = new QTreePropertyBrowser(this);browser->setStyleSheet("background-color: #f0f0f0;");```通过上述代码,我们就能够将qttreepropertybrowser的背景颜色设置为浅灰色。

2. 自定义样式除了使用样式表来修改qttreepropertybrowser的样式外,我们还可以通过自定义控件的绘制来实现样式的定制化。

Qt提供了丰富的绘图API,我们可以通过重写控件的绘制函数来实现控件外观的个性化定制。

以自定义qttreepropertybrowser的边框样式为例,我们可以通过继承QTreePropertyBrowser并重写其p本人ntEvent函数来实现:```cppclass CustomTreePropertyBrowser : public QTreePropertyBrowser {// ...void p本人ntEvent(QP本人ntEvent *event) {// 绘制自定义的边框样式QP本人nter p本人nter(this);p本人nter.setPen(QPen(Qt::red, 2));p本人nter.drawRect(rect());QTreePropertyBrowser::p本人ntEvent(event);}// ...};```通过上述代码,我们就能够实现自定义qttreepropertybrowser的边框样式,将其边框颜色设置为红色,并且边框宽度为2个像素。

resultmap中collection的property用法

resultmap中collection的property用法

resultmap中collection的property用法resultmap中collection的property在MyBatis中,我们可以使用<resultMap>元素来映射查询结果到Java对象。

<resultMap>元素中的<collection>元素用于映射查询结果中的集合属性。

<collection>元素可以定义多种不同的用法和配置选项,下面我们将详细讲解一些常见的用法。

1. 使用单个属性映射集合当查询结果中的集合属性是一个简单类型(如整数、字符串等)时,我们可以使用property属性将集合映射到Java对象的属性中。

例如,假设我们有一个Order对象,它有一个名为itemIds的属性,用于存储订单中的商品ID集合。

<resultMap id="orderMap" type="Order"><id column="id" property="id"/><result column="customer" property="customer"/><collection property="itemIds" ofType="int"><result column="item_id"/></collection></resultMap>在上面的例子中,<collection>元素的property属性指定了集合属性的名称为itemIds。

<result>元素则用于指定如何将查询结果中的item_id列映射到itemIds属性中。

2. 使用嵌套resultMap映射集合在某些情况下,我们可能需要从查询结果中映射一个嵌套的Java对象集合。

qt6 qproperty 可绑定 原理

qt6 qproperty 可绑定 原理

qt6 qproperty 可绑定原理Qt6是一种流行的跨平台应用程序开发框架,它提供了丰富的工具和功能,使开发者能够轻松创建高效、可靠的应用程序。

其中一个重要的特性是QProperty,它允许开发者将属性与其他对象进行绑定,从而实现属性的自动更新和同步。

本文将介绍Qt6 QProperty 的原理和使用方法。

QProperty是Qt中的一个宏,用于定义可绑定的属性。

通过使用QProperty,开发者可以将属性与其他对象的属性或信号进行绑定,当绑定的属性发生变化时,相关的操作将自动触发。

这种机制使得开发者能够更加方便地管理和同步属性的状态,提高了代码的可维护性和可读性。

QProperty的原理是基于Qt的元对象系统(Meta-Object System)。

在Qt中,每个QObject派生类都有一个元对象(Meta-Object),其中包含了该类的属性、信号和槽等信息。

QProperty利用元对象系统中的元对象信息,将属性与其他对象进行绑定。

使用QProperty需要按照一定的步骤进行。

首先,需要在类的头文件中使用Q_PROPERTY宏定义属性。

例如,我们可以定义一个名为"age"的属性:```cppclass Person : public QObject{Q_OBJECTQ_PROPERTY(int age READ age WRITE setAge NOTIFY ageChanged)public:int age() const;void setAge(int age);signals:void ageChanged(int newAge);};```在上述代码中,我们定义了一个名为"age"的属性,它具有读取(READ)、写入(WRITE)和通知(NOTIFY)的功能。

接下来,我们需要实现属性的读取和写入函数,并在属性发生变化时发出相应的信号。

在使用QProperty时,我们可以将属性与其他对象的属性或信号进行绑定。

sv property高级复杂用法

sv property高级复杂用法

《探索sv property的高级复杂用法》在Verilog和SystemVerilog中,sv property是用于描述信号行为和约束的强大工具。

它可以用来定义与时序相关的性质,从而验证设计的正确性。

本文将深入研究sv property的高级复杂用法,帮助读者更深入地理解并灵活应用这一功能。

1. 介绍sv propertysv property是SystemVerilog中引入的一个重要特性,它可以用于描述设计中的性质和约束。

sv property通常包括assertion和covergroup两个部分,其中assertion用于描述设计中的性质,而covergroup用于覆盖率分析。

通过使用sv property,设计工程师可以方便地定义和验证设计中的行为和时序约束。

2. 基本的sv property语法让我们回顾一下基本的sv property语法。

一个简单的sv property 通常由property和endproperty关键字包围,中间包含对信号行为的描述。

下面是一个简单的sv property示例:```verilogproperty p1;@(posedge clk) disable iff (rst_n)(req && !ack) |-> ##[1:10] ack;endproperty```在这个示例中,我们定义了一个名为p1的sv property,描述了当req有效且ack无效时,经过1到10个时钟周期后,ack必须变为有效。

3. 高级复杂用法之sequence和eventually除了基本的sv property语法外,我们还可以使用一些高级的复杂用法来描述更复杂的时序约束。

其中,sequence和eventually是两个常用的关键字。

sequence用于描述一系列信号事件的发生顺序,而eventually用于描述某个事件最终会发生。

通过组合使用这两个关键字,可以灵活地描述各种复杂的时序约束。

propertyutils.getproperty 原理 -回复

propertyutils.getproperty 原理 -回复

propertyutils.getproperty 原理-回复标题:深入理解PropertyUtils.getProperty的原理在Java开发中,Apache Commons BeanUtils库中的PropertyUtils工具类提供了对JavaBean对象属性进行操作的功能,其中包括getProperty方法。

本文将详细解析PropertyUtils.getProperty的原理,以帮助开发者更好地理解和使用这个功能。

一、getProperty方法简介PropertyUtils.getProperty(Object bean, String property)是PropertyUtils工具类的一个核心方法,其主要功能是从给定的JavaBean 对象中获取指定属性的值。

其中,参数bean表示要操作的JavaBean对象,property表示要获取的属性名。

二、getProperty方法的工作流程1. 验证输入参数:首先,getProperty方法会对输入的bean和property 参数进行验证。

如果bean为null或者property为空或仅包含空格,那么该方法会抛出IllegalArgumentException异常。

2. 分解属性路径:如果输入的property参数中包含了点号(.),那么getProperty方法会将其视为一个属性路径,例如"address.street"。

此时,该方法会将属性路径分解为多个单个属性名,如"address"和"street"。

3. 获取目标属性:接下来,getProperty方法会从bean对象开始,按照分解后的属性路径依次查找每个属性。

对于每个属性,该方法会执行以下步骤:a. 查找getter方法:根据JavaBean规范,每个属性都应该有一个对应的getter方法(如getAddress)和一个setter方法(如setAddress)。

Qt之自定义属性Q_PROPERTY

Qt之自定义属性Q_PROPERTY

Qt之⾃定义属性Q_PROPERTYQt提供了⼀个绝妙的属性系统。

跟那些由编译器提供的属性差不多。

然⽽,作为⼀个独⽴于编译器和平台的库,Qt不依赖于⾮标准的编译特性,⽐如__property 或[property]。

Qt可以在任何平台上的标准编译器下编译。

Qt属性系统基于元数据对象系统--就是那个提供了对象内置信号和槽通讯机制的家伙。

Q_PROPERTY()是⼀个宏,⽤来在⼀个类中声明⼀个属性property,由于该宏是qt特有的,需要⽤moc进⾏编译,故必须继承于QObject 类。

Q_PROPERTY(type nameREAD getFunction[WRITE setFunction][RESET resetFunction][NOTIFY notifySignal][DESIGNABLE bool][SCRIPTABLE bool][STORED bool][USER bool][CONSTANT][FINAL])下⾯是⼀些典型的声明属性的⽰例:Q_PROPERTY(double minValue READ getMinValue WRITE setMinValue)Q_PROPERTY(bool animation READ getAnimation WRITE setAnimation)Q_PROPERTY(QColor barColor READ getBarColor WRITE setBarColor)⼀个属性的⾏为就像类的数据成员,但是它还具有附加的特性,这些特性可以被元数据对象系统操作。

这些特性是:需要⼀个READ访问器函数。

⽤于读属性的值。

理想情况下,有⼀个不变的函数⽤于此⽬的,并且它必须返回属性的类型的值或指针或引⽤。

例如,QWidget::focus是⼀个只读的属性,它对应⼀个读函数:QWidget::hasFocus()。

⼀个可选的WRITE访问器函数。

它⽤于设置属性的值。

c++ property的用法

c++ property的用法

在C++中,没有直接支持属性(property)的语言特性,但可以使用一些技术和惯用法来模拟属性的行为。

以下是几种常见的实现属性的方法:Getter 和Setter 函数:定义公共成员函数来获取(getter)和设置(setter)属性的值。

这种方法需要手动编写getter 和setter 函数,并通过它们来访问和修改属性的值。

class MyClass {private:int myProperty;public:int getMyProperty() const {return myProperty;}void setMyProperty(int value) {myProperty = value;}};int main() {MyClass obj;obj.setMyProperty(42);int value = obj.getMyProperty();// value 现在为42return 0;}成员函数的重载运算符:使用成员函数重载运算符的方式,使属性看起来像是直接访问的变量。

这种方法可以通过重载赋值运算符(=)来实现。

class MyClass {private:int myProperty;public:int operator=(int value) {myProperty = value;return myProperty;}};int main() {MyClass obj;obj = 42;int value = obj; // 通过重载的运算符赋值操作// value 现在为42return 0;}请注意,以上只是模拟属性的常见方法之一,具体的实现方式可以根据需求和代码结构的复杂性而有所变化。

另外,C++17 中引入了属性特性(attributes),可以通过标准库中的[[nodiscard]]、[[fallthrough]] 等特性来提供编译器级别的属性支持,但并不是通用的属性实现方法。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档