# IProperty<TContainer>

> Base interface for working with properties.

## Definition

* **Type:** Interface
* **Namespace:** [Unity.Properties](/engine/6000.7/script-reference/unity/properties.md)
* **Assembly:** UnityEngine.PropertiesModule

```csharp
public interface IProperty<TContainer> : IProperty, IPropertyAccept<TContainer>
```

## Remarks

This is used to pass or store properties without knowing the underlying value type.

* [Property\<TContainer, TValue>](/engine/6000.7/script-reference/unity/properties/property2.md)

## Methods

| Method                                                                              | Description                                          |
| ----------------------------------------------------------------------------------- | ---------------------------------------------------- |
| [GetValue](/engine/6000.7/script-reference/unity/properties/iproperty1/getvalue.md) | Returns the property value of a specified container. |
| [SetValue](/engine/6000.7/script-reference/unity/properties/iproperty1/setvalue.md) | Sets the property value of a specified container.    |

## Inheritance

**Inherited Members:**

* [IProperty.DeclaredValueType()](/engine/6000.7/script-reference/unity/properties/iproperty/declaredvaluetype.md)
* [IProperty.HasAttribute\<T>()](/engine/6000.7/script-reference/unity/properties/iproperty/hasattribute.md)
* [IProperty.GetAttribute\<T>()](/engine/6000.7/script-reference/unity/properties/iproperty/getattribute.md)
* [IProperty.GetAttributes\<T>()](/engine/6000.7/script-reference/unity/properties/iproperty/getattributes.md)
* [IProperty.GetAttributes()](/engine/6000.7/script-reference/unity/properties/iproperty/getattributes.md)
* [IProperty.Name()](/engine/6000.7/script-reference/unity/properties/iproperty/name.md)
* [IProperty.IsReadOnly()](/engine/6000.7/script-reference/unity/properties/iproperty/isreadonly.md)
* [IPropertyAccept\<T>.Accept(IPropertyVisitor, T)](/engine/6000.7/script-reference/unity/properties/ipropertyaccept1/accept.md)
