MetaType includes common types, and you can extend it with UI-friendly types. For example, instead of using one type of string, Business Meta-Model has Short String, Long String, HTML, Email, Phone and number. You can create a new MetaType based on system type or create a custom one.
Business Foundation (BF) lets you use a number of different meta types for your .NET applications. You can use the included meta-types or implement a custom meta-type.
## Default meta-types
Call the RegisteredTypes method of MetaClassManager class to get all registered meta-types. The following table shows ready-to-use BF meta-types.
Ready-to-use BF meta-types
Name | System Type | Represents |
Guid | Guid | A globally unique identifier (GUID). |
DateTime | DateTime | An instant in time, typically expressed as a date and time of day. |
Date | DateTime | An instant in date. |
Integer | Integer | A 32-bit signed integer. |
Float | Double | A double-precision floating-point number. |
Currency | Currency | A currency number. |
CheckboxBoolean | Boolean | A Boolean value with check box. |
DropDownBoolean | Boolean | A Boolean value with drop-down. |
Text | String | Text of fixed length. Maximum length is 4096 chars. |
String | An e-mail string. | |
Url | String | A URL string. |
LongText | String | A long text. |
Html | String | An HTML string. |
File | File | A file (name, length, content type, stream). |
Image | File | An image file. |
IntegerPercent | Integer | A 32-bit signed integer percent. |
FloatPercent | Double | A double-precision floating-point percent. |
Duration | Integer | A 32-bit signed integer duration value. |
## Create a meta type based on system type
You can create a new meta-type based on system type. You can find a complete list of system types in the McDataType enumerators.
To create a meta-type, such as Geolocation based on the String system type, open the edit scope and add a new MetaFieldType object to the MetaClassManager.RegisteredTypes collection.
Code sample
Or, add a new record to the mcmd\_MetaFieldType table and restart the application.
After registration, you can add a geolocation field to the meta-class. Using the meta-type name, you can load a new geolocation view and edit the UI control.
## Create a custom meta type
When implementing a custom meta-type, you need to create the Meta-field installer and Meta-field property binder. When you create a meta-field, BF calls the meta-field installer to process meta-field into SQL columns. When you load an entity object, BF calls the meta-object property binder to convert values from an SQL column to a meta-field value.
To create a custom **Meta-field installer**, you create a class that implements the IMetaFieldInstaller interface, and implement the following methods.
**IMetaFieldInstaller interface methods**
Name | Description |
AssignDataSource | Create a new columns in the SQL database from meta-field |
AssignValidators | Assign default validators |
UpdateDataSource | Update SQL columns from updated meta-field |
UpdateValidators | Update validators |
RemoveDataSource | Remove columns from SQL database |
RemoveValidators | Remove validators |
To create a custom **Meta-object property binder**, create a class that implements the IMetaObjectPropertyBinder interface, and implement the following methods.
**IMetaObjectPropertyBinder interface methods**
Name | Description |
PreLoad | Load value from SQL row and save to meta field property. |
PostLoad | Fill properties by other. |
PreSave | Save value to SQL row. |
PostSave | Fill properties by other. |
Delete | Clean up if meta field is removing. |
InitTableConfig | Initialize additional SQL relations. |
**[New in Commerce 14]** You should register the custom meta-field installer and meta-object property binder in the **appsettings.json Commerce section**.
**Version 10-13**
You should register the custom meta-field installer and meta-object property binder in the **mediachase.businessFoundation.data/metaObject/types** section of the \_application config_file.