What I'm really looking for is a more generic method, something like
Object#parent_namespace:

class A; end
module B
  class C
    D = A.new
  end
end

puts A.parent_namespace => Object
puts B.parent_namespace => Object
puts B::C.parent_namespace => B
puts B::C::D.parent_namespace => C
puts B::C::D.class.parent_namespace => Object

So that lookups could be easily done:

obj.parent_namespace.const_get(:name)
obj.parent_namespace.send(name, value)

Is there perhaps a way to do this via the Ruby C API?