DynamicWhere.ex
DynamicWhere.exv3.4.0·docs

CacheMemoryType

CacheMemoryType names the three internal cache stores DynamicWhere.ex maintains for reflection metadata. It's the handle you pass to CacheExpose.ClearCache(...) or CacheExpose.IsCacheFull(...) to operate on one store at a time. It lives in DynamicWhere.ex.Optimization.Cache.Enums.

Values

ValueDescription
TypePropertiesCached property metadata per Type.
PropertyPathCached validated & normalized property paths.
CollectionElementTypeCached collection element-type lookups.

The three cache stores

Each enum value maps one-to-one to an internal ConcurrentDictionary store managed by CacheDatabase. The CacheEvictionStrategy you configure applies to each store independently.

StoreKeyValuePurpose
TypePropertiesTypeDictionary<string, PropertyInfo>All public instance properties per type.
PropertyPath(Type, string)stringValidated & normalized property paths.
CollectionElementTypeTypeType?Element type for collection types.
Note
All three stores share the same MaxCacheSize and EvictionStrategy from CacheOptions. To tune a store independently, you would need to manage it manually via CacheExpose — there is no per-store configuration.

C# usage

Clear one store:

using DynamicWhere.ex.Optimization.Cache.Source;
using DynamicWhere.ex.Optimization.Cache.Enums;

CacheExpose.ClearCache(CacheMemoryType.PropertyPath);

Check whether a specific store is full:

bool full = CacheExpose.IsCacheFull(CacheMemoryType.TypeProperties);

Clear all stores at once (does not require the enum):

CacheExpose.ClearAllCaches();

Monitoring

Per-store statistics surface through the reporting APIs — every report enumerates all three values of this enum so you can see entry counts, tracking records, and estimated memory independently. There are no hit, miss or eviction counters anywhere in the cache API.

var stats = CacheExpose.GetCacheStatistics();
var memory = CacheExpose.GetMemoryUsage();
string report = CacheExpose.GeneratePerformanceReport();