# Property<TContainer, TValue>

> Base class for implementing properties. This is an abstract class.

## Definition

* **Type:** Class
* **Namespace:** [Unity.Properties](/engine/6000.5/script-reference/unity/properties.md)
* **Assembly:** UnityEngine.PropertiesModule
* **Implements:** [IProperty\<T>](/engine/6000.5/script-reference/unity/properties/iproperty1.md), [IProperty](/engine/6000.5/script-reference/unity/properties/iproperty.md), [IPropertyAccept\<T>](/engine/6000.5/script-reference/unity/properties/ipropertyaccept1.md)

```csharp
public abstract class Property<TContainer, TValue> : IProperty<TContainer>, IProperty, IPropertyAccept<TContainer>
```

## Remarks

A [IProperty](/engine/6000.5/script-reference/unity/properties/iproperty.md) is used as an accessor to the underlying data of a container.

## Properties

| Property                                                                               | Description                                                       |
| -------------------------------------------------------------------------------------- | ----------------------------------------------------------------- |
| [IsReadOnly](/engine/6000.5/script-reference/unity/properties/property2/isreadonly.md) | Gets a value indicating whether the property is read-only or not. |
| [Name](/engine/6000.5/script-reference/unity/properties/property2/name.md)             | Gets the name of the property.                                    |

## Methods

| Method                                                                                               | Description                                                                                                                                                                  |
| ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| [Accept](/engine/6000.5/script-reference/unity/properties/property2/accept.md)                       | Call this method to invoke [IPropertyVisitor.Visit](/engine/6000.5/script-reference/unity/properties/ipropertyvisitor/visit.md) with the strongly typed container and value. |
| [AddAttribute](/engine/6000.5/script-reference/unity/properties/property2/addattribute.md)           | Adds an attribute to the property.                                                                                                                                           |
| [AddAttributes](/engine/6000.5/script-reference/unity/properties/property2/addattributes.md)         | Adds a set of attributes to the property.                                                                                                                                    |
| [DeclaredValueType](/engine/6000.5/script-reference/unity/properties/property2/declaredvaluetype.md) | Returns the declared value type of the property.                                                                                                                             |
| [GetAttribute](/engine/6000.5/script-reference/unity/properties/property2/getattribute.md)           | Returns the first attribute of the given type.                                                                                                                               |
| [GetAttributes](/engine/6000.5/script-reference/unity/properties/property2/getattributes.md)         | Returns all attribute for this property.                                                                                                                                     |
| [GetValue](/engine/6000.5/script-reference/unity/properties/property2/getvalue.md)                   | Returns the property value of a specified container.                                                                                                                         |
| [HasAttribute](/engine/6000.5/script-reference/unity/properties/property2/hasattribute.md)           | Returns true if the property has any attributes of the given type.                                                                                                           |
| [SetValue](/engine/6000.5/script-reference/unity/properties/property2/setvalue.md)                   | Sets the property value of a specified container.                                                                                                                            |
