Skip to content

Event Filtering

Apq.ChangeBubbling provides flexible event filtering mechanisms.

Filter Interface

csharp
public interface IChangeEventFilter
{
    bool ShouldProcess(BubblingChange change);
}

Built-in Filters

PropertyNameFilter

csharp
var filter = new PropertyNameFilter("Name", "Email");
ChangeMessenger.RegisterFilter("propertyFilter", filter);

NodeNameFilter

csharp
var filter = new NodeNameFilter("Users", "Settings");
ChangeMessenger.RegisterFilter("nodeFilter", filter);

ChangeKindFilter

csharp
var filter = new ChangeKindFilter(
    NodeChangeKind.CollectionAdd,
    NodeChangeKind.CollectionRemove
);
ChangeMessenger.RegisterFilter("kindFilter", filter);

ThrottleFilter

csharp
var filter = new ThrottleFilter(TimeSpan.FromMilliseconds(100));
ChangeMessenger.RegisterFilter("throttleFilter", filter);

Custom Filters

csharp
public class CustomFilter : IChangeEventFilter
{
    public bool ShouldProcess(BubblingChange change)
    {
        return change.NewValue != null;
    }
}

ChangeMessenger.RegisterFilter("customFilter", new CustomFilter());

Managing Filters

csharp
// Register
ChangeMessenger.RegisterFilter("myFilter", filter);

// Remove
ChangeMessenger.RemoveFilter("myFilter");

Released under the MIT License