When are `uvm_field_* assigned for UVM object classes?

In reply to chr_sue:

Thanks for the reply. I thought the UVM field macros handled the factory registration and value assignment.

Notice that the test class in my example above does not have a get(), but it’s somehow retrieving the string value from config_db. I’m passing config objects between other testbench components without ever using get() functions.

Is there a difference in the way field macros work in UVM objects vs UVM components? Maybe do I need a get() inside UVM objects, but not UVM components?