# PropertyVisitor

> Base class for implementing algorithms using properties. This is an abstract class. For more information on how to implement a property visitor by deriving from this class, including an example, refer to Create a property visitor with the PropertyVisitor class

## Definition

* **Type:** Class
* **Namespace:** [Unity.Properties](/engine/6000.7/script-reference/unity/properties.md)
* **Assembly:** UnityEngine.PropertiesModule
* **Implements:** [IPropertyBagVisitor](/engine/6000.7/script-reference/unity/properties/ipropertybagvisitor.md), [IListPropertyBagVisitor](/engine/6000.7/script-reference/unity/properties/ilistpropertybagvisitor.md), [IDictionaryPropertyBagVisitor](/engine/6000.7/script-reference/unity/properties/idictionarypropertybagvisitor.md), [IPropertyVisitor](/engine/6000.7/script-reference/unity/properties/ipropertyvisitor.md), [ICollectionPropertyVisitor](/engine/6000.7/script-reference/unity/properties/icollectionpropertyvisitor.md), [IListPropertyVisitor](/engine/6000.7/script-reference/unity/properties/ilistpropertyvisitor.md), [ISetPropertyVisitor](/engine/6000.7/script-reference/unity/properties/isetpropertyvisitor.md), [IDictionaryPropertyVisitor](/engine/6000.7/script-reference/unity/properties/idictionarypropertyvisitor.md)

```csharp
public abstract class PropertyVisitor : IPropertyBagVisitor, IListPropertyBagVisitor, IDictionaryPropertyBagVisitor, IPropertyVisitor, ICollectionPropertyVisitor, IListPropertyVisitor, ISetPropertyVisitor, IDictionaryPropertyVisitor
```

## Methods

| Method                                                                                                 | Description                                                                          |
| ------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ |
| [AddAdapter](/engine/6000.7/script-reference/unity/properties/propertyvisitor/addadapter.md)           | Adds an adapter to the visitor.                                                      |
| [IsExcluded](/engine/6000.7/script-reference/unity/properties/propertyvisitor/isexcluded.md)           | Called before visiting each property to determine if the property should be visited. |
| [RemoveAdapter](/engine/6000.7/script-reference/unity/properties/propertyvisitor/removeadapter.md)     | Removes an adapter from the visitor.                                                 |
| [VisitCollection](/engine/6000.7/script-reference/unity/properties/propertyvisitor/visitcollection.md) | Called when visiting any non-specialized collection property.                        |
| [VisitDictionary](/engine/6000.7/script-reference/unity/properties/propertyvisitor/visitdictionary.md) | Called when visiting a specialized dictionary property.                              |
| [VisitList](/engine/6000.7/script-reference/unity/properties/propertyvisitor/visitlist.md)             | Called when visiting a specialized list property.                                    |
| [VisitProperty](/engine/6000.7/script-reference/unity/properties/propertyvisitor/visitproperty.md)     | Called when visiting any leaf property with no specialized handling.                 |
| [VisitSet](/engine/6000.7/script-reference/unity/properties/propertyvisitor/visitset.md)               | Called when visiting a specialized set property.                                     |
