summaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/Bread/Board/Declare/Meta/Role/Attribute.pm14
-rw-r--r--lib/Bread/Board/Declare/Role/Object.pm1
2 files changed, 15 insertions, 0 deletions
diff --git a/lib/Bread/Board/Declare/Meta/Role/Attribute.pm b/lib/Bread/Board/Declare/Meta/Role/Attribute.pm
index a6114ea..1eabba1 100644
--- a/lib/Bread/Board/Declare/Meta/Role/Attribute.pm
+++ b/lib/Bread/Board/Declare/Meta/Role/Attribute.pm
@@ -83,6 +83,20 @@ has dependencies => (
predicate => 'has_dependencies',
);
+=attr infer
+
+If true, the dependency list will be inferred as much as possible from the
+attributes in the class. See L<Bread::Board::Manual::Concepts::Typemap> for
+more information. Note that this is only valid for constructor injection
+services.
+
+=cut
+
+has infer => (
+ is => 'ro',
+ isa => 'Bool',
+);
+
=attr constructor_name
The constructor name to use when creating L<Bread::Board::ConstructorInjection>
diff --git a/lib/Bread/Board/Declare/Role/Object.pm b/lib/Bread/Board/Declare/Role/Object.pm
index 9d4a938..34fbf3e 100644
--- a/lib/Bread/Board/Declare/Role/Object.pm
+++ b/lib/Bread/Board/Declare/Role/Object.pm
@@ -31,6 +31,7 @@ after BUILD => sub {
);
}
elsif ($service->isa('Bread::Board::Declare::ConstructorInjection')
+ && $service->associated_attribute->infer
&& (my $meta = Class::MOP::class_of($service->class))) {
my $inferred = Bread::Board::Service::Inferred->new(
current_container => $self,