Как я могу получить доступ к метаклассу модуля, к которому применяется моя роль Moose?

я используюлось роли применить некоторое поведение оболочки вокруг некоторых методов доступа в классе. Я хочу применить эту роль к ряду модулей, каждый из которых имеет свой набор атрибутов, чьи методы доступа я хочу обернуть. Есть ли способ доступа к метаклассу применяемого модуля изнутри роли? то есть что-то вроде этого:

package My::Foo;
use Moose;
with 'My::Role::X';

has [ qw(attr1 attr2) ] => (
    is => 'rw', # ...
);

has 'fields' => (
    is => 'bare', isa => 'ArrayRef[Str]',
    default => sub { [qw(attr1 attr2) ] },
);
1;

package My::Role::X;
use Moose::Role;

# this should be a Moose::Meta::Class object
my $target_meta = '????';

# get Class::MOP::Attribute object out of the metaclass
my $fields_attr = $target_meta->find_attribute_by_name('fields');

# extract the value of this attribute - should be a coderef
my $fields_to_modify = $fields_attr->default;

# evaluate the coderef to get the arrayref
$fields_to_modify = &$fields_to_modify if ref $fields_to_modify eq 'CODE';

around $_ => sub {
    # ...
} for @$fields_to_modify;
1;

Ответы на вопрос(1)

Ваш ответ на вопрос