Метод include имеет перегрузку, которая позволяет передавать лямбду для регистрации вашего типа. Для достижения именно того, что вы хотите с атрибутами, вы можете сделать так:
unityContainer.ConfigureAutoRegistration()
.Include(If.DecoratedWith<ActionAtribute>,
(t, c) => c.RegisterType(typeof(IAction<>).MakeGenericType(t), typeof(Action<>).MakeGenericType(t)))
.IncludeAllLoadedAssemblies()
.ApplyAutoRegistration();
Кроме того, первым аргументом метода Include является Predicate, поэтому, если вы не хотите использовать атрибуты, а используете какой-то другой механизм для определения того, какие типы включать или исключать, вы можете сделать так:
// You may be getting these types from your config or from somewhere else
var allowedActions = new[] {typeof(ObjectB)};
unityContainer.ConfigureAutoRegistration()
.Include(t => allowedActions.Contains(t),
(t, c) => c.RegisterType(typeof(IAction<>).MakeGenericType(t), typeof(Action<>).MakeGenericType(t)))
.IncludeAllLoadedAssemblies()
.ApplyAutoRegistration();