# ContainerPropertyBag<TContainer>

> Base class for implementing a static property bag for a specified container type. This is an abstract class.

## Definition

* **Type:** Class
* **Namespace:** [Unity.Properties](/engine/6000.0/script-reference/unity/properties.md)
* **Assembly:** UnityEngine.PropertiesModule
* **Inherits from:** [PropertyBag\<T>](/engine/6000.0/script-reference/unity/properties/propertybag1.md)
* **Implements:** [IPropertyBag\<T>](/engine/6000.0/script-reference/unity/properties/ipropertybag1.md), [IPropertyBag](/engine/6000.0/script-reference/unity/properties/ipropertybag.md), [INamedProperties\<T>](/engine/6000.0/script-reference/unity/properties/inamedproperties1.md)

```csharp
public abstract class ContainerPropertyBag<TContainer> : PropertyBag<TContainer>, IPropertyBag<TContainer>, IPropertyBag, INamedProperties<TContainer>
```

## Remarks

A [ContainerPropertyBag\<TContainer>](/engine/6000.0/script-reference/unity/properties/containerpropertybag1.md) is used to describe and traverse the properties for a specified `TContainer` type.

In order for properties to operate on a type, a [ContainerPropertyBag\<TContainer>](/engine/6000.0/script-reference/unity/properties/containerpropertybag1.md) must exist and be pre-registered for that type.

*NOTE* In editor use cases property bags can be generated dynamically through reflection. (see Unity.Properties.Reflection)

## Methods

| Method                                                                                                     | Description                                                                                                                |
| ---------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------- |
| [AddProperty](/engine/6000.0/script-reference/unity/properties/containerpropertybag1/addproperty.md)       | Adds a [Property\<TContainer, TValue>](/engine/6000.0/script-reference/unity/properties/property2.md) to the property bag. |
| [TryGetProperty](/engine/6000.0/script-reference/unity/properties/containerpropertybag1/trygetproperty.md) | Gets the property associated with the specified name.                                                                      |

## Inheritance

**Inherited Members:**

* [PropertyBag\<T>.Accept(ITypeVisitor)](/engine/6000.0/script-reference/unity/properties/propertybag1/accept.md)
* [PropertyBag\<T>.GetProperties()](/engine/6000.0/script-reference/unity/properties/propertybag1/getproperties.md)
* [PropertyBag\<T>.GetProperties(T)](/engine/6000.0/script-reference/unity/properties/propertybag1/getproperties.md)
* [PropertyBag\<T>.Instantiate()](/engine/6000.0/script-reference/unity/properties/propertybag1/instantiate.md)
* [PropertyBag\<T>.CreateInstance()](/engine/6000.0/script-reference/unity/properties/propertybag1/createinstance.md)
* [PropertyBag\<T>.TryCreateInstance(T)](/engine/6000.0/script-reference/unity/properties/propertybag1/trycreateinstance.md)
* [PropertyBag\<T>.InstantiationKind()](/engine/6000.0/script-reference/unity/properties/propertybag1/instantiationkind.md)
