# PropertiesSource

> Evaluates a selector by reading the member of the same name through the Unity.Properties data model.

## Definition

* **Type:** Class
* **Namespace:** [Unity.SmartStrings.Extensions](/engine/6000.7/script-reference/unity/smartstrings/extensions.md)
* **Assembly:** UnityEngine.SmartStringsModule
* **Inherits from:** [Source](/engine/6000.7/script-reference/unity/smartstrings/core/extensions/source.md)
* **Implements:** [ISource](/engine/6000.7/script-reference/unity/smartstrings/core/extensions/isource.md), [IInitializer](/engine/6000.7/script-reference/unity/smartstrings/core/extensions/iinitializer.md)

```csharp
public class PropertiesSource : Source, ISource, IInitializer
```

## Remarks

Resolution goes through [PropertyContainer](/engine/6000.7/script-reference/unity/properties/propertycontainer.md), so any type Unity.Properties can build a property bag for is supported, including plain classes and structs and [MonoBehaviour](/engine/6000.7/script-reference/unityengine/monobehaviour.md) fields, with no property bag registered in advance.

The members that resolve mirror Unity's serialization rules: public instance fields and members marked with [CreatePropertyAttribute](/engine/6000.7/script-reference/unity/properties/createpropertyattribute.md) or SerializeField. Methods and plain, non-attributed properties are not visited, so those selectors return `false` and are left to a later source.

Matching is ordinal by default. When the formatter is configured for case-insensitive placeholders, a selector with no exact member match is resolved by a case-insensitive scan of the members, returning the first match.

On fully ahead-of-time compiled players, Unity.Properties may be unable to build a property bag for a type that is not referenced elsewhere.

## Inheritance

**Inherited Members:**

* [Source.m\_Formatter](/engine/6000.7/script-reference/unity/smartstrings/core/extensions/source/m-formatter.md)
* [Source.m\_SmartSettings](/engine/6000.7/script-reference/unity/smartstrings/core/extensions/source/m-smartsettings.md)
* [Source.TrySetResultForNullableOperator(ISelectorInfo)](/engine/6000.7/script-reference/unity/smartstrings/core/extensions/source/trysetresultfornullableoperator.md)
