In reply to chr_sue:
Here is the code for the get() function:
static function bit get(uvm_component cntxt,
string inst_name,
string field_name,
inout T value);
//TBD: add file/line
int unsigned p;
uvm_resource#(T) r, rt;
uvm_resource_pool rp = uvm_resource_pool::get();
uvm_resource_types::rsrc_q_t rq;
if(cntxt == null)
cntxt = uvm_root::get();
if(inst_name == "")
inst_name = cntxt.get_full_name();
else if(cntxt.get_full_name() != "")
inst_name = {cntxt.get_full_name(), ".", inst_name};
m_sequencer is of type uvm_sequencer_base. get_sequencer also returns a uvm_sequencer_base. Both are sufficient for the cntxt.get_full_name() call.
p_sequencer is only defined if the `uvm_declare_p_sequencer macro is used, which is not required nor recommended.
There is absolutely no need for any casting to be done. Please be sure to post correct information.