The problem ended up being the method I was using for binding:
this.BindFilter<ActivityFilter>(FilterScope.Action, 0)
.WhenActionMethodHas<Activity>()
.WithPropertyValueFromActionAttribute<Activity>("tags", a => a.Tags)
.WithPropertyValueFromActionAttribute<Activity>("directive", a => a.Directive);
I should have used WithConstructorArgumentFromActionAttribute
since I was trying to inject into a constructor argument (I mistakenly thought that the Constructor/Property referred to the source of the value, not the destination.)
Once I changed this it worked fine.